Wordpress URL中的WooCommerce自定义价格范围

Wordpress URL中的WooCommerce自定义价格范围,wordpress,woocommerce,Wordpress,Woocommerce,我正在进行一个使用WooCommerce的项目,需要添加一个自定义链接,该链接将导致具有特定价格限制的商店页面-我不能使用内置的WooCommerce价格过滤器小部件,但添加了一个带有以下URL的静态链接: http://my.domain.com/shop?min_price=0&max_price=2000 其中shop是WooCommerce商店页面的页面,我刚刚在URL中添加了其余参数 当商店页面打开时,产品仍然存在,但没有任何东西被过滤——我做错了什么?这与价格过滤器小部件使

我正在进行一个使用WooCommerce的项目,需要添加一个自定义链接,该链接将导致具有特定价格限制的商店页面-我不能使用内置的WooCommerce价格过滤器小部件,但添加了一个带有以下URL的静态链接:

http://my.domain.com/shop?min_price=0&max_price=2000
其中
shop
是WooCommerce商店页面的页面,我刚刚在URL中添加了其余参数


当商店页面打开时,产品仍然存在,但没有任何东西被过滤——我做错了什么?这与价格过滤器小部件使用的原理相同吗?

url参数不起作用的原因是,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\u filter.php中的woocommerce\u price\u filter\u init的修改。上面的函数不加载运行price filter小部件的javascript,因此如果您需要该小部件工作,您必须将其放回(或者让我知道,我会将其编辑回)

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

$('select').change(函数(){
//警报(“发生文档准备就绪!”);
var min=$(“#min_price”).val();
var max=$(“#max#u price”).val();
//警报(分钟);
如果(最小!=''&&max!=''){
var url=“/?最小价格=“+min+”&最大价格=“+max;
window.location.href=url;
}
});

看起来是个好主意,我会尽力让你知道你救了我的命。非常感谢。嗨,伙计们,我想知道你们是否也能在WooCommerce 2.2.2中使用它。。。这个答案似乎不再有效。这是一个死线程,但我也想知道:在当前的WooCommerce版本(2.6.4)中,是否有一种通过向url添加参数来过滤产品的方法?了解此代码有任何问题,然后发送消息。我总是在线帮助你。
<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>