您的第一个问题:
试着写下你想做的事情:你不想打印已经打印的帖子。
所以你必须记住哪些帖子已经打印出来了。在PHP中,通常情况下,数组是一个很好的解决方案,可以记住已经完成的事情。让我们添加一个数组:
$printed_posts = array( $current_post );
添加当前帖子的ID是因为应该始终排除此帖子。
现在,您还必须将打印的帖子添加到该数组中:
array_push( $printed_posts, $post->ID );
但如何处理该阵列呢?您想从查询中排除已打印的帖子。这很容易,因为你有选择
exclude=
这样做。因此,让我们从查询中排除已打印的帖子:
$posts = get_posts(\'numberposts=5&category=\'. $category->term_id . \'&exclude=\' . implode( \',\', $current_post ); // excludeded posts as comma separeted list
在继续阅读之前,请尝试在正确的位置将此建议插入到代码中。这就是你学习如何解决问题的方法。
如果只搜索副本(&N);粘贴解决方案,现在开始(未经测试,我不喜欢这样的代码混乱):
<?php
function related_posts() {
if (is_single()) {
global $post;
$current_post = $post->ID;
$categories = get_the_category();
foreach ($categories as $category) {
$printed_posts = array( $current_posts );
?>
<div class="my-related-posts">
<h4>Related Posts</h4>
<ul>
<?php
$posts = get_posts(\'numberposts=5&category=\'. $category->term_id . \'&exclude=\' . implode( \',\', $current_post );
foreach($posts as $post) {
array_push( $printed_posts, $post->ID );
?><li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li><?php
}
?>
</ul>
</div>
<?php
}
wp_reset_query();
}
}
add_action( \'genesis_after_post_content\', \'related_posts\' );
对于你的第二个问题,你可以问谷歌或任何其他类似“获取帖子类别”或“获取帖子父类别”的搜索引擎