3

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

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

shopWooCommerce Shop 页面的页面在哪里,我只是在 URL 中添加了其余参数。

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

4

2 回答 2

6

您的 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,所以如果你需要小部件也可以工作,你必须把它放回去(或者让我知道,我会重新编辑它)。

于 2013-01-28T20:02:43.533 回答
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>
于 2020-03-06T11:14:18.223 回答