我使用这段代码通过查看帖子的标签来生成相关帖子。问题是我使用了一个名为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;
}
最合适的回答,由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
.