这个查询有没有与WordPress 2.9.2不兼容的地方?

时间:2011-02-09 作者:Scott B

这件事我已经琢磨了两天了。还是搞不懂。

我正在PC上的localhost上使用XAMPlite测试WordPress多个版本中的主题发布。

我在WP 2.9.2上遇到了一个问题,这在任何其他更新的WP安装上都不会发生。

查看下面的查询。只要我保留注释行,它就可以正常工作。然而,当我取消注释该行时,它会使我的xampplite Apache服务器崩溃。WTF?

$the_query = new WP_Query(array(
  \'posts_per_page\' => 5,
  \'offset\' => 0, 
  \'order\' => \'ASC\',
  \'post__not_in\' => get_option("sticky_posts"),
//  \'cat\' => get_cat_ID(\'top-menu\'),
  ));
print "<p>header.php";exit;
我甚至尝试将cat属性硬编码为一个静态数字:

\'cat\' => 3
它仍然崩溃!

这是代码wordpress 2.9.2或我的Xamplite设置的问题吗?看起来很奇怪,它在我在同一个盒子上安装的所有更新版本的WP中都能工作。

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

我认为唯一在句法上有疑问的是showposts 可以替换为posts_per_page.

SO网友:Stephen Cronin

现在认识到这一点,但这可能有助于人们通过谷歌找到这一点:

当在由pre_get_posts hook. 问题是我错过了条件:

$query->is_main_query()
这意味着它可以处理所有的查询,而不仅仅是主查询。加上这个,我就解决了这个问题。我使用的完整条件是(然后是下面的其他代码:

if ( ! is_category() || ! $query->is_main_query() || ! is_a( $query, \'WP_Query\' ) )
    return;

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?