WooCommerce URL中的自定义价格范围

时间:2013-01-18 10:18:49

标签: wordpress woocommerce

我正在开发使用WooCommerce的项目,并且需要添加自定义链接,这会导致商店页面出现一定的价格限制 - 我不会使用内置的WooCommerce价格过滤器小部件,但添加了静态链接以下网址:

http://my.domain.com/shop?min_price=0&max_price=2000

shop是WooCommerce Shop页面的页面,我刚刚在网址中添加了其他参数。

当Shop页面打开时,产品仍然存在,但没有任何过滤 - 我做错了什么?这与Price Filter Widget使用的原理相同吗?

2 个答案:

答案 0 :(得分:6)

您的网址参数没有做任何事情的原因是,如果价格过滤器窗口小部件处于活动状态,WooCommerce仅运行价格过滤器。

要解决此问题,请使用初始化价格过滤器的woocommerce函数,更改名称,并修改它以运行过滤器,即使窗口小部件未处于活动状态。然后解开woocommerce价格过滤器初始化功能并挂钩你的。

也就是说,将它放入你的functions.php文件:

function my_price_filter_init() {
    global $woocommerce;

    if ( ! is_admin() ) {

        unset( $_SESSION['min_price'] );
        unset( $_SESSION['max_price'] );

        if ( isset( $_GET['min_price'] ) )
            $_SESSION['min_price'] = $_GET['min_price'];

        if ( isset( $_GET['max_price'] ) )
            $_SESSION['max_price'] = $_GET['max_price'];

        add_filter( 'loop_shop_post_in', 'woocommerce_price_filter' );
    }
}
remove_action('init', 'woocommerce_price_filter_init');
add_action( 'init', 'my_price_filter_init' );

这是对widget-price_filter.php的woocommerce_price_filter_init的修改。上面的函数没有加载运行价格过滤器小部件的javascript,所以如果你需要小部件也可以工作,你必须把它放回去(或者只是让我知道,我会重新编辑它)。

答案 1 :(得分:0)

您还可以根据需要使用woocommerce自定义价格过滤器html页面或woocommerce存档页面或侧边栏。(jquery和php)

<script>
<?php
global $wp;
$current_url = home_url( add_query_arg( array(), $wp->request ) );
?>      
        $('select').change(function() {
            //alert("document ready occurred!");
            var min = $( "#min_price" ).val();
            var max = $( "#max_price" ).val();
            //alert(min);
            if(min!=''&& max!=''){
                 var url = "<?php echo $current_url;?>/?min_price="+min+"&max_price="+max;
                window.location.href = url;
            }
        });
    </script>