为什么在这个存档页面中,调用Query_Posts()函数只显示最近10个帖子?

时间:2014-08-14 作者:AndreaNobili

我是WordPress主题开发方面的新手,我发现有两个问题posts archive page: http://lnx.asper-eritrea.com/archivio/

上一页必须将所有博客帖子显示在无序列表中。

主要问题是,只显示了最近10篇发布的帖子。

另一个问题与erroneus调用query_posts() 作用

这是生成posts循环的PHP代码:

<?
// get the term using the slug and the tag taxonomy
//$term = get_term_by( \'slug\', \'featured\', \'post_tag\' );
// pass the term_id to tag__not_in
query_posts();
?>


<?php
if (have_posts()) :
    echo \'<ul>\';
    // Start the Loop.
    while (have_posts()) : the_post();

        /*
         * Include the post format-specific template for the content. If you want to
         * use this in a child theme, then include a file called called content-___.php
         * (where ___ is the post format) and that will be used instead.
         */

        echo \'<li>\';
        get_template_part(\'contentArchive\', get_post_format());
        echo \'</li>\';

    endwhile;
    echo \'</ul>\';

else :
    // If no content, include the "No posts found" template.
    get_template_part(\'content\', \'none\');

endif;
?>
那么为什么previuos循环只显示最后10条记录呢?如何修复并显示所有博客帖子?

我能做些什么来修复query_posts() 呼叫

我认为这两个问题可能与此相关,因为可能我必须使用参数来表示显示所有博客帖子。

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

WordPress默认情况下只加载10篇帖子。这可以在管理员的“设置->阅读”下更改,然后在“博客页面最多显示”旁边设置金额。

您可以通过几种方式在自定义查询中覆盖该数字,但我首先建议不要使用query_posts() (阅读链接了解原因)赞成get_posts() 甚至更好WP_Query() 并通过相应的arguments

//create a query with WP_Query
$posts = new WP_Query(array(
    \'post-type\' => \'post\', //this can be post, page or a custom post type
    \'posts_per_page\' => -1, //this can be any number or settting to -1 will give you all the posts
    //add whatever other parameters you need
));

//modify the loop slightly
if ($posts->have_posts()) :
    echo \'<ul>\';
    // Start the Loop.
    while ($posts->have_posts()) : $posts->the_post();

        /*
         * Include the post format-specific template for the content. If you want to
         * use this in a child theme, then include a file called called content-___.php
         * (where ___ is the post format) and that will be used instead.
         */

        echo \'<li>\';
        get_template_part(\'contentArchive\', get_post_format());
        echo \'</li>\';

    endwhile;
    echo \'</ul>\';

else :
    // If no content, include the "No posts found" template.
    get_template_part(\'content\', \'none\');

endif;
?>
另一种方法是pre_get_posts 使用操作可以劫持循环并在从数据库中提取帖子之前更改查询。

您需要通过使用以下函数进行检查,以确保只影响该归档页面的主循环is_main_query() 以及该页底部提到的其他内容。

将此代码放入函数中。php文件-您需要进行一些测试,以确保它不会影响其他页面/循环,但这是一般的想法。

function wst_157845( $query ) {
    if ( !is_admin() && $query->is_main_query() && is_archive() )
        $query->set( \'posts_per_page\', -1 );
    }
}
add_action( \'pre_get_posts\', \'wst_157845\'); 
希望这有帮助!

SO网友:Tomás Cot

尝试以下操作:

query_posts( \'posts_per_page=-1\' );
只是提醒一下,你不应该在这里使用这个函数,做你想做的任何事,但建议你使用WP_Queryget_posts

结束

相关推荐

Query Event Posts by Date

我正在尝试按当前日期以及事件的开始和结束日期查询自定义帖子类型(事件)。我想有三个选择:现在的,即将到来的和过去的。这是我正在使用的代码,但它工作不正常。 $current = time(); switch ($print_type) { case \'current\': $meta_quer_args = array( \'relation\' => \'AND\',