在Wordpress中循环设置帖子数,然后在下一组中再次运行相同的循环等

时间:2009-06-10 07:49:06

标签: php wordpress loops nested-loops

我看了看,试图找到我一直在寻找的答案,但我还没有看到答案:

我正在尝试生成一个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; ?>

3 个答案:

答案 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>