WooCommerce URL中的自定义价格范围

jOp*_*cic 2 wordpress woocommerce

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

http://my.domain.com/shop?min_price=0&max_price=2000
Run Code Online (Sandbox Code Playgroud)

shopWooCommerce Shop页面的页面在哪里,我刚刚在URL中添加了其余参数.

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

小智 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' );
Run Code Online (Sandbox Code Playgroud)

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

  • 嗨,大家好,我想知道你是否也适合WooCommerce 2.2.2 ...看来这个答案已经无效了. (3认同)