【发布时间】:2013-11-28 10:13:56
【问题描述】:
我有一个多站点 Wordpress 设置(3.5.1,我不能冒险更新),在切换到正确的博客后我正在查询一些帖子。
我有一个带有以下参数的 query_posts 函数:
$posts = query_posts('posts_per_page=5&paged=1&post_status=publish&orderby=date&order=desc');
从这个帖子查询中,query_vars 变为 ($GLOBALS['wp_query']->query_vars):
Array (
[posts_per_page] => 5
[paged] => 1
[post_status] => publish
[orderby] => date
[order] => desc
[error] => [m] => 0
[p] => 0
[post_parent] =>
[subpost] =>
[subpost_id] =>
[attachment] =>
[attachment_id] => 0
[name] =>
[static] =>
[pagename] =>
[page_id] => 0
[second] =>
[minute] =>
[hour] =>
[day] => 0
[monthnum] => 0
[year] => 0
[w] => 0
[category_name] =>
[tag] =>
[cat] =>
[tag_id] =>
[author_name] =>
[feed] =>
[tb] =>
[comments_popup] =>
[meta_key] =>
[meta_value] =>
[preview] =>
[s] =>
[sentence] =>
[fields] =>
[menu_order] =>
[category__in] => Array ( )
[category__not_in] => Array ( )
[category__and] => Array ( )
[post__in] => Array ( )
[post__not_in] => Array ( )
[tag__in] => Array ( )
[tag__not_in] => Array ( )
[tag__and] => Array ( )
[tag_slug__in] => Array ( )
[tag_slug__and] => Array ( )
[ignore_sticky_posts] =>
[suppress_filters] =>
[cache_results] => 1
[update_post_term_cache] => 1
[update_post_meta_cache] => 1
[post_type] =>
[nopaging] =>
[comments_per_page] => 50
[no_found_rows] =>
)
Wordpress 说它执行以查找这些帖子的查询是 ($GLOBALS['wp_query']->request):
SELECT SQL_CALC_FOUND_ROWS wp_5_posts.ID
FROM wp_5_posts
WHERE 1=1 AND wp_5_posts.post_type = 'post' AND (wp_5_posts.post_status = 'publish')
ORDER BY wp_5_posts.post_date desc LIMIT 0, 5
如果我在数据库上执行此查询,结果 ID 是:
12059
12046
12038
12030
12026
但是,如果我遍历帖子:
foreach($posts as $p){
echo($p->ID."<br>");
}
我得到以下 ID:
11741
11721
11643
12059
12046
12038
12030
12026
有谁知道这怎么可能?在调用 query_posts 之前,数组 $posts 是空的,我不明白为什么这些帖子会出现在数组中。如果我在我的 MySQL 数据库中手动选择这些帖子,它们之间没有明显的区别,这会使前三个在某种程度上变得特别,并且所有三个都比请求的其他 5 个旧。
提前致谢!
【问题讨论】: