【发布时间】:2021-12-24 04:40:36
【问题描述】:
我正在使用archive-product.php 作为基础构建自定义类别归档模板。我需要做的是使用产品类别的ID(在Woocommerce中为product_cat)仅显示某些类别的产品。但我想使用wc_get_products 而不是WP_Query 后循环,回复:https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query
"wc_get_products 和 WC_Product_Query 提供了一个标准的方法 检索可安全使用且不会因以下原因而损坏的产品 未来 WooCommerce 版本中的数据库更改。建筑定制 WP_Queries 或数据库查询将来可能会破坏您的代码 WooCommerce 版本随着数据向自定义表格移动以获得更好的效果 性能。”
我已将archive-product.php 复制到我的子主题中的woocommerce 文件夹中,并将其重命名为custom-category-archive.php,它的标题为
/*
Template Name: Custom Category Archive Template
*/
所以我可以在页面编辑器中选择它作为页面模板。
这是新模板 custom-category-archive.php 中的原始 Woocommerce 产品循环:
if ( woocommerce_product_loop() ) {
/**
* Hook: woocommerce_before_shop_loop.
*
* @hooked woocommerce_output_all_notices - 10
* @hooked woocommerce_result_count - 20
* @hooked woocommerce_catalog_ordering - 30
*/
do_action( 'woocommerce_before_shop_loop' );
woocommerce_product_loop_start();
if ( wc_get_loop_prop( 'total' ) ) {
while ( have_posts() ) {
the_post();
/**
* Hook: woocommerce_shop_loop.
*/
do_action( 'woocommerce_shop_loop' );
wc_get_template_part( 'content', 'product' );
}
}
woocommerce_product_loop_end();
如何使用类别 ID 修改循环以仅包含产品类别 (product_cat) 中的产品?这就是新的 WP_Query 帖子循环仅包含产品类别 12, 345, 7899 中的产品的方式:
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => '-1',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'terms' => array('12,345,7899'), // including categories by ID
'operator' => 'IN',
)
如何在我的custom-category-archive.php 模板的wc_get_loop_prop('total') 发布产品循环中包含产品类别,例如12, 345, 7899,以仅显示这三个产品类别中的产品?
【问题讨论】:
-
澄清一下,您有一个
WP_Query,它返回某些类别的产品。现在您希望相同的查询只返回ids而不是整个数据?你问的是这个吗?能解释清楚吗? -
谢谢,澄清一下,我想使用类别 ID 退回这些类别中的产品。但如果可能的话,我想使用 wc_get_loop_prop 循环而不是新的 WP_Query。也许使用 WP_Query 更简单更容易?
标签: php wordpress woocommerce categories