Show posts without term

时间:2014-08-27 作者:Robbert

我在一个产品页面上工作,如果产品页面标题与我在分类法“review product”中的术语相匹配,我将显示来自我的帖子类型“reviews”的评论。

Example.

产品页面标题:Refrigerator

显示(审阅)带有以下内容的帖子:

帖子类型:“评论”分类:“评论产品”术语:Refrigerator这完全可以。但有时我没有对产品的评论(因为产品名称和术语不匹配),然后我想显示“一般”评论。在我的网站中,这些帖子包含:

帖子类型:“评论”分类:“评论产品”术语:No term (!!!)这篇文章没有分类法中的“审查产品”一词。

My Question:

如果没有与产品标题匹配的评论帖子,我如何显示没有术语的评论帖子。

This is what I have now:

function gtp_show_reviews( $number = 100, $term = null ) {
    $reviews = new WP_Query( array( 
        \'post_type\'         => \'reviews\',
        \'review-product\'    => $term, // Fill this with product page slug (refrigerator)
    ));
    if( $reviews->have_posts() ) { 
        while( $reviews->have_posts() ) {
            $reviews->the_post();
            // The review
        }
    } 
    else {
        // Here I try to unset the \'review-product\' term
        unset($reviews->query_vars[\'review-product\']);
        unset($reviews->query_vars[\'term\']);

        while( $reviews->have_posts() ) {
            $reviews->the_post();
            // Check if review has no term
            if( $reviews->has_term() == false ) {
               // The review
            }
        }   
    }

    wp_reset_postdata();
}

2 个回复
最合适的回答,由SO网友:David 整理而成

不能使用的同一对象WP_Query 两次因此,您需要创建另一个具有tax_query 参数获取未分配给任何术语的帖子。

//fetch all reviews which have no assigned term in \'review-product\'
$taxonomy  = \'review-product\';
$post_type = \'reviews\';
$args = [
    \'post_type\' => $post_type,
    \'tax_query\' => [
        [
            \'taxonomy\' => $taxonomy,
            \'terms\'    => get_terms( $taxonomy, [ \'fields\' => \'ids\'  ] ),
            \'operator\' => \'NOT IN\'
        ]
    ]
];

$query = new \\WP_Query( $args );
其思想是获取分类法中所有术语的列表,并使用NOT IN 操作人员

示例中的第二个循环应该遍历新的WP_Query 对象

SO网友:geminorum
$posts_query = new WP_Query( array(
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'foo\',
            \'operator\' => \'NOT EXISTS\', // or \'EXISTS\'
        ),
    ),
) );

see: https://core.trac.wordpress.org/ticket/29181

结束

相关推荐

The Loop in Static Page

我对环路有一些问题。我以“Twenty14”主题为例。我正在使用基本循环创建2个php文件。一个是家。其中一个是名为示例页的模板页。php。两者都包含此代码;if( have_posts() ) : while( have_posts() ) : the_post(); the_content; endwhile; endif; 没什么特别的,唯一的区别是我在示例页面上有模板声明。php/** * Template Nam