您的 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_filter.php 的 woocommerce_price_filter_init 的修改。上面的函数不会加载运行价格过滤器小部件的 javascript,所以如果你需要小部件也可以工作,你必须把它放回去(或者让我知道,我会重新编辑它)。