这件事我已经琢磨了两天了。还是搞不懂。
我正在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中都能工作。
SO网友:Stephen Cronin
现在认识到这一点,但这可能有助于人们通过谷歌找到这一点:
当在由pre_get_posts hook. 问题是我错过了条件:
$query->is_main_query()
这意味着它可以处理所有的查询,而不仅仅是主查询。加上这个,我就解决了这个问题。我使用的完整条件是(然后是下面的其他代码:
if ( ! is_category() || ! $query->is_main_query() || ! is_a( $query, \'WP_Query\' ) )
return;