0

在我的 index.php 中,我使用此代码来限制每页的帖子,并且它可以正常工作:

$showposts = 5;
$do_not_show_stickies = 1;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('category__in' => $cat, 'showposts' => $showposts, 'ignore_sticky_posts' => 1, 'paged' => $paged);

$loop2query = new WP_Query($args);

query_posts($args); if(have_posts()) : while (have_posts()) : the_post(); ?>

<div class="blogpost"> ... </div>

<?php endwhile; endif;
posts_nav_link(); // Navigating the pages with $showposts each. ?>

相同的代码在 category.php 中不起作用,因此我将其更改为以下内容,但它仍然不起作用:

$showposts = 4;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

if (have_posts()) { while (have_posts()) { the_post(); ?>
    <div class="blogpost"> ... </div>

<?php } }

else { ?>
    <p>There are no blog posts in this category.</p>
<?php } ?>

<?php posts_nav_link(); // Navigating the pages with $showposts each. ?>

我尝试使用if(have_posts()) : while (have_posts()) : the_post(); ?> [...]category.php 更改该行以使其与 index.php 中的该行相似,但我没有尝试过任何工作。

4

3 回答 3

5

Wordpress 对此有一个设置,在设置 -> 阅读 -> 博客页面下的管理区域中最多显示

您可以使用它而不是自定义修改您的查询。它可能会使您的项目在以后的维护过程中变得更容易一些。

于 2012-11-20T06:35:03.353 回答
1

使用posts_per_page参数(此处为 Codex

$args = array('category__in' => $cat, 'posts_per_page' => $showposts, 'ignore_sticky_posts' => 1, 'paged' => $paged);
于 2012-11-19T22:36:22.793 回答
0

在您的第一个示例中,您实际上有两个查询 : new WP_query, then query_posts,因此您需要删除其中一个,因为这是多余的。在第二个示例中,恰恰相反,您没有任何查询(尽管 WordPress 可能会默认执行一个查询,具体取决于调用此页面的位置)。所以无论如何,在你的第二个例子中使用是没有意义的$showposts,因为你没有在之后执行查询...... if (have_posts())通常用于处理来自 WordPress 的默认(在你的页面代码中不可见)循环或处理你的查询在之前声明(通常用query_posts())。正如@Samuel 所说,要使用的参数是posts_per_page,但我认为你还没有到那里,你应该首先开始学习如何执行查询,所以你可以从阅读 WordPress codex 开始query_posts,这将是最好的去处:http ://codex.wordpress.org/Function_Reference/query_posts 。

于 2012-11-19T23:04:19.813 回答