我想在类别页面上的帖子旁边按标签显示相关帖子。
我可以找到的所有相关帖子代码都将在single.php
的嵌套循环中使用,但我需要它在类别页面的循环中。
所以,当你去类别" Cats"它应该输出以下内容: "发布1个标题",类别" Cats",标记"小猫" "相关帖子1.1标题",标签"小猫" "相关帖子1.2 title",tag" Kittens"
"发布2个标题",类别" Cats",标记" tomcats" "相关文章2.1标题",标记" tomcats" "相关帖子2.2 title",tag" tomcats"
...
这是我提出的代码,但它已经破了。
`//首先查询 $ my_query = new WP_Query(' cat = 6');
// If first query have posts
if( $my_query->have_posts() ) :
// While first query have posts
while ($my_query->have_posts()) : $my_query->the_post();
?>
<!-- start post -->
<!-- End post div -->
<?php
// tags
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args=array(
'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'posts_per_page'=>99,
'caller_get_posts'=>1
);
// Second query
$my_second_query = new WP_Query('$args');
// If second query have posts
if( $my_second_query->have_posts() ) :
?>
<?php
// While second query have posts
while( $my_second_query->have_posts() ) : $my_second_query->the_post();
?>
<!-- start post -->
<!-- End post div -->
<?php
// End second while have posts
endwhile;
?>
<?php
// End first while have posts
endwhile;
// End if first query have posts
endif;
?>`
这甚至可能吗?我无法为我的生活找到榜样。 非常感谢提前
答案 0 :(得分:1)
single.php
或其他任何地方使用都无关紧要。将其添加到您的functions.php
文件中:
function echo_related_posts() {
global $post;
// Get the current post's tags
$tags = wp_get_post_tags( $post->ID );
$tagIDs = array();
if ( $tags ) {
// Fill an array with the current post's tag ids
$tagcount = count( $tags );
for ( $i = 0; $i < $tagcount; $i++ ) {
$tagIDs[$i] = $tags[$i]->term_id;
}
// Query options, the magic is with 'tag__in'
$args = array(
'tag__in' => $tagIDs,
'post__not_in' => array( $post->ID ),
'showposts'=> 5
);
$my_query = new WP_Query( $args );
// If we have related posts, show them
if ( $my_query->have_posts() ) {
$related = '';
while ( $my_query->have_posts() ) {
$my_query->the_post();
$current = $my_query->current_post + 1;
$related .= "Related post " . $current . ": ";
$related .= "<a href='" . get_permalink() . "' >";
$related .= get_the_title();
$related .= "</a>";
if ( ( $my_query->current_post + 1 ) != ( $my_query->post_count ) ) $related .= ", ";
}
echo $related;
}
else echo "No related posts";
}
else echo "No related posts";
wp_reset_query();
}
显然,您可以更改此功能中的任何内容以获得您正在寻找的确切结果,这只是一个示例,最多可回复五个相关帖子。请查看http://codex.wordpress.org/Class_Reference/WP_Query以获取有关自定义查询的进一步参考。
使用该功能,您现在可以访问echo_related_posts()
功能,该功能将通过常用标签输出任何相关帖子。因此,在您的category.php
或您的类别页面中使用的模板中,您可以执行以下操作(为简洁起见,这是一个过于简化的循环,请注意echo_related_posts()
函数):
// Inside your existing loop
<?php while ( have_posts() ) : the_post(); ?>
// Output the current post info here
// Output the related posts
<?php echo_related_posts(); ?>
<?php endwhile; ?>
假设找到相关帖子,它将输出如下内容:
“相关文章1:标题一,相关文章2:标题二,相关文章3:标题三”
希望你能从那里拿走它!