Single.php从管理员到非管理员的不同行为

时间:2013-11-10 作者:whiteletters in blankpapers

对于同一个职位,我突然有一种奇怪的行为single.php 普通用户和管理员之间的文件。

在循环开始时,我执行:

echo \'<pre dir="ltr">\';
print_r($GLOBALS[\'wp_query\']);
echo \'</pre>\';
结果是不同的。

In the case of administrator:

[queried_object_id] => 603
    [request] => SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND wp_posts.post_name = \'test\' AND wp_posts.post_type = \'aya-bi-aya\'  ORDER BY wp_posts.post_date DESC 

In the case of non-administrator:

[queried_object_id] => 0
    [request] => SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = \'aya-bi-aya\' AND (wp_posts.post_status = \'publish\')  ORDER BY wp_posts.post_date DESC LIMIT 0, 10
我花了一天半的时间试图找出这种功能障碍背后的原因,但没有成功。你的时间真的很宝贵。

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

根据评论,问题是由于使用query_posts 这会破坏主查询。

Please don\'t use query_posts.

应该注意的是,使用此replace the main query 在页面上可以increase page loading times, 在最坏的情况下more than doubling the amount of work needed or more. 虽然易于使用,但该功能prone to confusion and problems 过后有关详细信息,请参阅下面关于注意事项的注释。

http://codex.wordpress.org/Function_Reference/query_posts (重点矿山)

此外,它会覆盖$wp_query 页面上的主循环使用的。

如果需要其他循环,请使用新的WP_Query 对象,而不是query_posts.

结束

相关推荐

如何在Single.php中向侧边栏添加/插入类?

我有一个侧边栏显示在主页和单页上。当它显示在主页上时,它已经定义了一个css类(宽度:30%)当它显示在单个页面中时,我想向侧边栏添加/插入一个新类。我希望这种新样式可以修改预先定义的元素。所以它以35%的宽度结束我试着做如下:In functions.php (child theme)function sidebar_class() { if ( is_single() ) { $class = \'sidebar-single\'; }