在一页wordpress中过滤相同价格的产品

时间:2018-04-05 11:58:43

标签: wordpress woocommerce

所以我有一个在线商店,有各种各样的产品,但不喜欢有一个页面显示价格范围的产品。假设我有一个名为3k Store的页面。我希望当用户访问该页面时,它会过滤并仅显示价格为3000的商品,请问我该怎么做?我正在使用wordpress和woocommerce。感谢。

1 个答案:

答案 0 :(得分:0)

1。创建页面模板以列出产品

创建一个页面模板,以便能够在其上放置一些代码。例如,将其命名为page.list-product-in-range.php,并在文件的开头添加此代码,使其成为模板:

<?php // Template Name: List product in range ?>
<?php get_header(); ?>
<?php get_footer(); ?>

2。在wordpress admin

中创建一个页面

例如,创建一个名为Product that cost 3000的页面,然后选择之前创建的模板。这一切都是暂时的。

3。转到我们在 1

部分创建的php文件

<?php get_header(); ?><?php get_footer(); ?>之间,添加此部分以获得价格为3000的产品:

(我允许meta_query中的范围,因此您可以通过使用value内的数字轻松设置3000以外的其他内容。

<?php 
    $products = get_posts(
        array(
            'posts_per_page' => -1,
            'post_type' => array('product', 'product_variation'),
            'meta_query' => array(
                array(
                    'key' => '_price',
                    'value'   => array(
                        3000 ,
                        3000
                    ),
                    'compare' => 'BETWEEN',
                    'type'=> 'NUMERIC'
                )
            )
        )
    );
?>

4。添加循环以列出产品

我们在部分 3 中添加的代码完成此代码之后:

<ul class="products">
    <?php

        if (!empty($products)) {
            foreach ( $products as $post ) : setup_postdata($post);
                wc_get_template_part( 'content', 'product' );
            endforeach;
        } else {
            echo __( 'No products found', 'woocommerce' );
        }
        wp_reset_postdata();
    ?>
</ul>

您还可以使用pre_get_posts挂钩在主要查询中设置产品,或者使用get_posts()类来代替WP_Query类。为简单起见,我只使用get_posts()

如果你需要分页(我认为你需要),你应该考虑使用pre_get_posts或WP_Query。

代码经过测试,确实有效。