我正在开发使用WooCommerce的项目,并且需要添加自定义链接,这会导致商店页面出现一定的价格限制 - 我不会使用内置的WooCommerce价格过滤器小部件,但添加了静态链接以下网址:
http://my.domain.com/shop?min_price=0&max_price=2000
shop
是WooCommerce Shop页面的页面,我刚刚在网址中添加了其他参数。
当Shop页面打开时,产品仍然存在,但没有任何过滤 - 我做错了什么?这与Price Filter Widget使用的原理相同吗?
答案 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)
<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>