Using has_tag() outside loop

时间:2012-12-01 作者:wp student

我想检查下一篇文章是否有特定的标签。我尝试了以下代码,但不起作用,因为has_tag() 仅在循环中有效。我想在循环之外使用它。

<?php if ( has_tag( \'mario\', $post->ID ) ) : ?>
my content
<?php endif; ?>
下面的代码列出了post中的标记,但我不知道如何使用if() / else() 条件:

global $post;
foreach ( get_the_tags( $post->ID ) as $tag ) {
    echo $tag->name . \', \';
}

2 个回复
SO网友:Chip Bennett

这个has_tag() 必须在循环内使用conditional donot;它可以通过$post 对象作为第二个参数:

has_tag( $tag, $post );
has_tag() 默认为当前帖子,只需将对象传递给下一个相邻帖子即可。幸运的是,WordPress提供了检索相邻帖子的功能:get_adjacent_post():

get_adjacent_post( $in_same_cat, $excluded_categories, $previous );
The$in_same_cat 参数默认为false, 这个$excluded_categories 参数默认为\'\', 还有$previous 参数默认为true. 所以,我们只需要将第三个参数改为false, 要检索下一篇文章,而不是上一篇文章,请执行以下操作:

get_adjacent_post( false, \'\', true );
将其与has_tag() 有条件的:

if ( has_tag( \'mario\', get_adjacent_post( false, \'\', true ) ) {
    // Next post has the \'mario\' post tag;
    // do something
}

SO网友:Zach

您应该能够使用以下内容:

$post_id = 123;
$posttags = get_the_tags($post_id);
if (!is_wp_error($posttags) && $posttags) {
    foreach($posttags as $tag) {
        if ($tag->name == \'mario\') {
            echo \'yup\';
        }
    }
}
您所做的是:

如果有任何标签,抓取标签,如果其中一个foreach实例与以下情况匹配,则通过foreach运行每个标签mario, 做点什么(在这种情况下,重复“是的”)如果有帮助,请告诉我。

结束

相关推荐

获取最新创建的自定义类别(GET_TERM_BY和变量)(Out Loop)

我想知道为什么下面的代码不能工作?我的情况:我设置了一个名为“问题”的自定义类别。我想做的是获取最新创建的类别(即“第2卷第1期”)并获取其ID,以便运行plugin 作用z_taxonomy_image_url($currentID); 它根据以下项标识的类别输出URL:$currentID目前我有一个非常黑客的解决方案,但如果有人能找出下面代码的最后3行为什么不起作用,那就太棒了。我们也希望有替代和更清洁的解决方案。$taxonomy=wp_list_categories(\'taxonomy=iss