Get multiple tags by slug

时间:2014-08-14 作者:MisterSpeck

以下代码对我来说很好:

$term = get_term_by(\'slug\', ‘foo’, \'post_tag\');       
$args = array ( 
  \'posts_per_page\' => 5, 
  \'paged\' => $paged,
  \'post__not_in\' => get_option( \'sticky_posts\' ) ,
  \'tag__not_in\' => $term
);
我现在想get_term_by 多个标记,例如“foo”和“bar”(我试图显示所有帖子,除了那些标记为“foo”或“bar”的帖子)。

我意识到这可能很简单,但我不知道该怎么做。

想法?

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

我想出了一个比我之前的答案更好的方法:

首先,需要设置一个数组,其中包含要排除的标记的段塞。然后在该数组上循环,并在每个项上使用get_term_by() 要获取标记,请将其ID保存到另一个数组。这就是您可以传递给查询的内容。

$tag_slugs = array(
    \'foo\',
    \'bar\',
);

$tag_ids = array();
foreach( $tag_slugs as $slug ) {
    $tag = get_term_by( \'slug\', $slug, \'post_tag\' );
    $tag_ids[] = $tag->term_id;
}

$args = array ( 
  \'posts_per_page\' => 5, 
  \'paged\'          => $paged,
  \'post__not_in\'   => get_option( \'sticky_posts\' ),
  \'tag__not_in\'    => $tag_ids,
);

SO网友:Peter Andrews

get_term_by() 只能检索单个术语。尝试使用get_terms() 相反http://codex.wordpress.org/Function_Reference/get_terms

结束

相关推荐

Meta Tags by Meta Box

我已经成功地将自定义元标记添加到我页面上的元框中。我遇到的问题是,当metabox没有数据时,它仍然显示在html中。这是我得到的代码,有人对如何不显示这一点有什么想法吗? <!-- Google Meta Tags --> <meta name=\"citation_title\" content=\"<?php if(get_post_meta($post->ID, \"vw_citation_title\", true) !=\'\' ) echo get