0

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

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

3 回答 3

1

我破解了您的解决方案以使其正常工作。花了一点时间,因为我的代码 fu 不是你所说的“好”。这是解决方案:

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

感谢您的输入!

于 2009-06-11T16:30:09.990 回答
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;
}

?>
于 2009-06-10T23:22:14.077 回答
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>
于 2009-07-09T06:44:09.323 回答