如何显示5个以上的帖子?

时间:2014-02-25 作者:Jon

我运行的代码显示子类别,以及子类别中的所有帖子。但如果一个类别中有5个以上的帖子,则只显示最新的5个帖子。

如何显示全部内容,或至少设置一个数字,如9个帖子等。?

我的代码:

<?php
$args = array(
    \'child_of\' => 1
);
$categories = get_categories( $args );
foreach  ($categories as $category) {
    echo \'<li><a>\'.$category->name.\'</a>\';
    echo \'<ul>\';
    foreach (get_posts(\'cat=\'.$category->term_id) as $post) {
        setup_postdata( $post );
        echo \'<li><a href="\'.get_permalink($post->ID).\'">\'.get_the_title().\'</a></li>\';
    }
    echo \'</ul></li>\';
}
?>

3 个回复
最合适的回答,由SO网友:butlerblog 整理而成

我想你可以用posts_per_page 您的get_posts 查询:

$args = array( \'child_of\' => 1 );
$categories = get_categories( $args ); 
foreach ($categories as $category) {
    echo \'<li><a>\'.$category->name.\'</a>\';
    echo \'<ul>\';

    $posts_args = array(
        \'posts_per_page\' => 9,
        \'category\' => $category->term_id
    );
    foreach (get_posts($posts_args) as $post) {
        setup_postdata( $post );
        echo \'<li><a href="\'.get_permalink($post->ID).\'">\'.get_the_title().\'</a></li>\';         
    }  
    echo \'</ul></li>\';
}

SO网友:tfrommen

默认情况下,帖子数设置为5,因此您必须根据自己的喜好进行设置。如果要显示所有帖子,那么-1, 还有你想要的号码。

您还应该将函数放在循环之外(就像在第二个循环中一样foreach), 下面是您的优化代码:

<?php  
$args = array(
    \'child_of\' => 1,
);
$categories = get_categories($args);
if (count($categories)) {
    ?>
    <ul>
    <?php
    foreach ($categories as $category) {
        ?>
        <li><a><?php echo $category->name; ?></a>
        <ul>
        <?php
        $args = array(
            \'posts_per_page\' => -1, // query ALL posts
            \'post_status\' => \'publish\',
            \'cat\' => $category->term_id,
        );
        $query = new WP_Query($args);
        while ($query->have_posts()) {
            $query->the_post();
            ?>
            <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
            <?php
        }
        wp_reset_postdata();
        ?>
        </ul></li>
        <?php
    }
    ?>
    </ul>
    <?php
}
?>

SO网友:Nicolai Grossherr

你必须利用post_per_pagenumberposts 的参数get_posts(). 参数默认为5, 看见source, 只需选择您希望它在您的get_posts() 调用,默认值将被覆盖。

结束

相关推荐

如何使用自定义帖子类型进行WP_QUERY搜索?

我已经注册了一个名为“节点”的自定义帖子类型。当我创建一个基本的WP\\u查询来获取这种类型的帖子时,它工作得很好。示例:$args = array( \'post_status\' => \'publish\', \'post_type\' => \'node\'); $query = new WP_Query($args); 这将获取类型为“node”的所有已发布帖子。然而,只要我将此与搜索结合起来,就不会返回任何内容。示例:$