所以我有一个在线商店,有各种各样的产品,但不喜欢有一个页面显示价格范围的产品。假设我有一个名为3k Store的页面。我希望当用户访问该页面时,它会过滤并仅显示价格为3000的商品,请问我该怎么做?我正在使用wordpress和woocommerce。感谢。
答案 0 :(得分:0)
创建一个页面模板,以便能够在其上放置一些代码。例如,将其命名为page.list-product-in-range.php
,并在文件的开头添加此代码,使其成为模板:
<?php // Template Name: List product in range ?>
<?php get_header(); ?>
<?php get_footer(); ?>
例如,创建一个名为Product that cost 3000
的页面,然后选择之前创建的模板。这一切都是暂时的。
1
在<?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'
)
)
)
);
?>
我们在部分 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。
代码经过测试,确实有效。