问题在于:
我一直在使用此代码将其他帖子显示在页面末尾(作为列表),这些帖子应与访问者当前正在阅读的帖子属于同一类别。它工作正常,但出现的问题是当帖子被分配到多个类别,然后我有多个不需要的列表。
如何将此限制为仅限一个类别(按名称,或通过ID或第一个类别),以便当显示包含多个类别的帖子时,循环显示仅来自一个类别的帖子?
很多人。
<?php global $post;
$categories = get_the_category();
foreach ($categories as $category) :
?>
<h3 class="naslovostalih">Ostali članci iz ove kategorije:</h3>
<ul class="clanciostalih">
<?php
$posts = get_posts('numberposts=10&category='. $category->term_id);
foreach($posts as $post) :
?>
<li>
<?php
$title = get_the_title($ID);
$link = get_permalink();
printf('<a class="linkpost" title="%s" href="%s">%s</a>', $title, $link, $title);
the_post_thumbnail('thumb-232');
echo '<div id="excerptcu">';
echo excerpt(25);
echo '</div>';
?>
<p class="more-link-wrapper2"><a href="<?php the_permalink(); ?>" class="read-more button"><?php _e( 'Opširnije »', 'fearless' ); ?></a></p>
</li>
<?php endforeach; ?>
</ul>
<?php endforeach; ?>
答案 0 :(得分:0)
您可以像在代码中一样将类别ID添加到get_posts
不是循环类别,而是尝试如下:此处3是类别ID
$posts = get_posts('category=3&numberposts=10');
此外,如果您想按名称检索特定类别的类别ID,可以使用
get_cat_ID( $cat_name )
答案 1 :(得分:0)
也许你可以在你的foreach循环中取第一个类别而不是遍历所有这些类别?您可以通过设置像
这样的变量来完成此操作$first = true;
在循环之前。然后,将foreach循环设置为“if”,检查$ first == false。如果是,请执行循环。在你的循环中,做你的东西并设置$ first = true,它只会迭代一次。