检查帖子是否在循环内有术语

时间:2017-07-03 作者:aitor

我试图在自定义分类法中查询一篇包含三个术语的文章。然后,在循环中,我只想输出带有以下术语之一的帖子:

$args = array(
  \'post_status\'    => array( \'publish\' ),
  \'tax_query\'      => array(
    array(
        \'taxonomy\' => \'prr\',
        \'field\'    => \'slug\',
        \'terms\'    => [\'proteger\', \'respetar\', \'remediar\'],
    ),
  )
);
$prr_query = new WP_Query( $args ); ?>
if ( $prr_query->have_posts() ) {
    while ( $prr_query->have_posts() ) {
        $prr_query->the_post();
        if (has_term(\'proteger\')) {
          the_title();
        }
    }
}
wp_reset_postdata();
它不起作用。

如果我在没有条件的情况下执行循环,它会起作用:

if ( $prr_query->have_posts() ) {
    while ( $prr_query->have_posts() ) {
        $prr_query->the_post();
          the_title();
    }
}
wp_reset_postdata();
如果我做了var_dump($prr_query) 我明白了:

https://pastebin.com/jZq5t8Bt

在这个查询中,我可以看到post对象不包括术语列表。

如何仅输出具有特定术语的帖子?

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

由于您处理的是自定义分类法,因此必须在中提及该自定义分类法has_term().

if ( $prr_query->have_posts() ) {
    while ( $prr_query->have_posts() ) {
        $prr_query->the_post();
        if (has_term(\'proteger\', \'prr\')) {
          the_title();
        }
    }
}

Source

结束

相关推荐

Tricky Custom post loop

我正在构建一个以“theretailer”为基础的网站,但我不知道在哪里放置代码来让循环为自定义帖子类型“News”工作?主题使用的循环是 //$wp_query->query(\'posts_per_page=1\'.\'&paged=\'.$paged); $wp_query->query(\'posts_per_page=\'.get_option(\'posts_per_page\').\'&