为特定标签添加例外

时间:2012-03-14 作者:Dustin J

我使用这段代码通过查看帖子的标签来生成相关帖子。问题是我使用了一个名为Featured的标签,以便在幻灯片中显示帖子。因此,帖子显示为相关,因为匹配的特征标签,即使它们根本不一样。

那么,这段代码中是否有一个易于排除的标记“Featured”?

<?php $tags = get_the_tags(); ?>
<?php if($tags): ?>
<?php $related = get_related_posts($post->ID, $tags); ?>
<?php if($related->have_posts() && $related->found_posts >= 3 && get_option(\'pyre_related\') == \'On\'): ?>
我猜应该有一个tag\\uu not\\u in或类似的内容,但我对PHP的了解还不够,无法理解语法。

UPDATED:我最终没有使用奇普·贝内特的答案(这可能有用)。我必须找到函数。php,隐藏在主题内的一个特殊子文件夹中。在中使用tag\\uu not\\u似乎不起作用。它似乎总是返回相同的帖子(最新的帖子,即使它们没有共享类似的标签。下面是整个get\\u related\\u posts函数。

function get_related_posts($post_id, $tags = array()) {
    $query = new WP_Query();

    $post_types = get_post_types();
    unset($post_types[\'page\'], $post_types[\'attachment\'], $post_types[\'revision\'], $post_types[\'nav_menu_item\']);

    if($tags) {
        foreach($tags as $tag) {
            $tagsA[] = $tag->term_id;
        }
    }

    $args = wp_parse_args($args, array(
        \'showposts\' => 4,
        \'post_type\' => $post_types,
        \'post__not_in\' => array($post_id),
        \'tag__in\' => $tagsA,
        \'tag__not_in\' => 795,
        \'ignore_sticky_posts\' => 1,
    ));

    $query = new WP_Query($args);

    return $query;
}

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

这个get_the_tags() 函数返回一个对象数组。因此,您可以单步遍历此数组,并为“Featured”标记取消设置对象,可能如下所示:

<?php
$tags = get_the_tags();

foreach ( $tags as $tag_key => $tag_object ) {
    if ( \'featured\' == $tag_object->slug ) {
        unset( $tags[$tag_key] );
    }
}
// Continue with the rest of the code, here
?>
注:未测试。此外,假设“Featured”标记的slug是featured.

SO网友:Dustin J
            <?php 
            $tags = get_the_tags(); 
            foreach( $tags as $tag_key => $tag_object ) {
                if ( \'featured\' == $tag_object->slug ) {
                    unset( $tags[$tag_key] );
                    }
                }
            if($tags):
            $related = get_related_posts($post->ID, $tags);
            if($related->have_posts() && $related->found_posts >= 3 && get_option(\'pyre_related\') == \'On\'): 
            ?>
结束

相关推荐

Display tags with a twist

我想显示与WordPress标准不同的帖子标签。如果我理解正确的话,我对常规标记所能做的就是在它们之间和最后显示不同的东西。标签应如下所示:阅读更多关于标记1、标记2和标记3的信息阅读更多关于标记1和标记2的信息我怎么才能把那个“and”字放进去?