我看了看,试图找到我一直在寻找的答案,但我还没有看到答案:
我正在尝试生成一个Wordpress循环,它会从单个类别中获取所有帖子,并在<li></li>
个标记内一次显示三个。
输出应如下所示:
<li>My post title | Another Title | Third title</li>
<li>The next post title | A different post | Post #6</li>
<li>And so on | And so forth</li>
我需要这个循环遍历类别中的所有条目,直到完成,然后退出循环。
此时我的代码完全不起作用,但我已经提供了我正在使用的内容。如果有人对此有任何解决方案,我很乐意给你疯狂的道具,因为到目前为止,这已经让我三天没有任何解决方案。
<?php // Loop through posts three at a time
$recoffsetinit = '0';
$recoffset = '3';
query_posts('cat=1&showposts=0');
$post = get_posts('category=1&numberposts=3&offset='.$recoffsetinit.');
while (have_posts()) : the_post();
?>
<li>
<?php
$postslist = get_posts('cat=1&order=ASC&orderby=title');
foreach ($postslist as $post) : setup_postdata($post);
static $count = 0; if ($count == "3") { break; } else { ?>
<a href="<?php the_permalink() ?>"></a>
<?php $count++; } ?>
<?php endforeach; ?>
<?php $recoffsetinit = $recoffset + $recoffsetinit; ?>
</li>
<?php endwhile; ?>
答案 0 :(得分:1)
我破解了你的解决方案以使其发挥作用。这需要一点点,因为我的代码不是你所谓的“好”。这是解决方案:
<ul>
<?php
query_posts('category=1&showposts=0');
$posts = get_posts('category_name=my_cat&order=ASC&orderby=title&numberposts=0');
$postsPerLine = 3;
$currentPostNumber = 0;
foreach ($posts as $post) :
if ($currentPostNumber == 0) {
echo '<li>';
}
?>
<a href="<?php the_permalink(); ?>"></a>
<?php
$currentPostNumber++;
if ($currentPostNumber >= $postsPerLine) {
$currentPostNumber = 0;
echo '</li>';
}
endforeach;
?>
</ul>
感谢您的投入!
答案 1 :(得分:0)
没有wordpress可以测试,没有时间,但是这样的事情可能是更好的方法吗?
<?php
$postList = get_posts('cat=1&order=ASC&orderby=title');
$postsPerLine = 3;
echo "<ul>";
echo buildPosts($postList, $postsPerLine);
echo "</ul>";
function buildPosts($list, $perLine) {
$out = '';
$currentPostNumber = 0;
foreach ($list as $post) {
if ($currentPostNumber == 0) {
$out .= '<li>';
}
$out .= "<a href='" . the_permalink() . "'></a> ";
$currentPostNumber++;
if ($currentPostNumber <= $perLine) {
$currentPostNumber = 0;
$out .= '</li>';
}
}
return $out;
}
?>
答案 2 :(得分:0)
立即抓住某个类别的所有帖子,然后迭代它。创建指向每个帖子的链接,在分隔符中进行折腾,并在每三个帖子上开始新的<li>
<ul>
<?php
global $post;
$postsPerLine = 3;
$counter = 0;
$myposts = get_posts('category=1&orderby=title&order=ASC');
foreach($myposts as $post) :
echo (++$counter % postsPerLine) ? : '<li>';
?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php
echo ($counter % postsPerLine) ? ' | ' : '</li>';
endforeach;
?>
</ul>