2012-09-12 20 views
0

一切工作在我的代码旁边posts_per_page(它将显示的帖子数量)。这里是我的WordPress的部分代码:posts_per_page不起作用

<?php 
$category = get_the_category(); 
$current_category = $category[0]->term_id; 
$qarr = array(
    'posts_per_page' => $posts_number, 
    'cat' => $current_category, 
    'tag' => 'pinned', // tag filtered 
    'post__not_in' => array(get_the_ID()) 
); 
$q = new WP_Query($qarr); 
if($q->have_posts()) : while ($q->have_posts()) : $q->the_post(); 
?> 

为什么它不工作?我已阅读文档并不明白问题所在。

以下是完整的代码,如果你想查看和测试它,只需设置为$ posts_number一个数字:http://pastebin.com/uNsynNiM

+0

posts_per_page的默认值是5.如果您要完全删除posts_per_page参数,是否有5个帖子返回查询?如果不是,则没有足够的帖子来满足posts_per_page标准。尝试将其设置为低数字(如2)。你有2个职位?你得到2以上?您是否拥有符合查询条件的最少2篇文章? – maiorano84

+0

@ maiorano84我确实将posts_per_page设置为1,并且它返回了多个 - 这意味着它不能正常工作?随意查看我链接的完整代码,这是一个简短的脚本,您可以轻松测试。 –

+0

我也注意到,在这个版本中,您已将查询的标签从“特色”更改为“固定”。你是否有超过一个邮政标签'固定'? – maiorano84

回答

1

从以前的问题,你的主题主要是使用query_posts运行任何及所有邮政查询反对你的数据库。由于这改变了主循环,WP_Query和get_posts也受到对query_posts的任何和所有现有调用的影响。我相当肯定你的Widget中的WP_Query调用正在受到流氓query_posts调用的影响。

我的建议,因为它可能需要相当多的努力将您的主题从query_posts的所有实例转换为WP_Query,将暂时使用'showposts',因为这基本上解决了问题。我仍然建议将所有对query_posts函数的调用切换到WP_Query,只是因为这样做会显着提高性能,但最终,这需要您付出极大的努力来解决一个相当小的问题。

就我个人而言,我会这么做吗?作为良好实践的练习,我可能会,是的。我会说这是值得的吗?这取决于项目。如果这只是一个个人项目,我不会说这是必要的。

祝你好运,我希望这一切都能实现。

+0

为了澄清,WP_Query中的posts_per_page可能被query_posts调用中的showposts参数覆盖。由于我的主题本质上是一个没有query_posts调用的空白主题,因此复制所遇到的问题几乎是不可能的。 – maiorano84

+0

非常感谢您的回答,它确实解决了手头的问题,我会搜索并查找我正在使用query_posts的地点。我已经提出了这个答案,并将在今晚晚些时候接受它。如果进一步的输入来自其他用户,我会保持开放。欢呼再次支持! –