繁体   English   中英

在 WP_Query 中获取 WooCommerce 订阅产品类型和特定类别

[英]Get WooCommerce Subscription product type and specific category in a WP_Query

我正在为目录中的多个产品使用 WooCommerce 订阅插件,这些产品可作为个人产品或订阅产品使用,并且正在编写自定义模板页面来查询可作为订阅使用的产品。 我的查询在下面,一切在我看来都是正确的,但由于某种原因它不起作用。 任何人都可以看到这里有什么问题吗?

*注意,如果我删除“tax_query”,所有咖啡产品都会按预期返回,但是当我尝试通过 tax_query 进行限制时,不会返回任何产品(是的,我在咖啡类别中有订阅产品)。

$args = array(
    'post_type' => 'product',
    'posts_per_page' => -1,
    'product_cat' => 'coffee',
    'tax_query' => array( // builds the taxonomy query
            array(
                'taxonomy' => 'product_type',
                'field'    => 'name',
                'terms'    => 'subscription',
            ),
        ),
    );
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
    while ( $loop->have_posts() ) : $loop->the_post();
        wc_get_template_part( 'content', 'product' );
    endwhile;
} else {
    echo __( 'No products found' );
}
wp_reset_postdata();

您还需要为产品类别创建“tax_query”,以避免此问题,因为您的操作方式自 WordPress 3.1 版以来已被弃用,而支持“tax_query”。 所以在你的代码中:

$loop = new WP_Query( array(
    'post_type'      => 'product',
    'posts_per_page' => -1,
    'post_status'    => 'publish',
    'tax_query'      => array( // builds the taxonomy query
        'relation' => 'AND',
        array(
            'taxonomy' => 'product_cat',
            'field'    => 'slug',
            'terms'    => 'coffee',
        ),
        array(
            'taxonomy' => 'product_type',
            'field'    => 'name',
            'terms'    => 'subscription',
        ) 
    )
) );

if ( $loop->have_posts() ) {
    while ( $loop->have_posts() ) : $loop->the_post();
        wc_get_template_part( 'content', 'product' );
    endwhile;
} else {
    echo __( 'No products found' );
}

wp_reset_postdata();

它应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM