【问题标题】:Wordpress query_posts result differs from wp_query request resultWordpress query_posts 结果与 wp_query 请求结果不同
【发布时间】: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 个旧。

提前致谢!

【问题讨论】:

    标签: php mysql wordpress


    【解决方案1】:

    您是否尝试查看您在这两个查询中获得的帖子类型?我记得有一次我遇到了这个问题,我使用 wp_query 和 query_posts 查询帖子,在一种情况下,我只得到了 POST,而在另一种情况下,我得到了所有页面/媒体附件和帖子

    【讨论】:

    • 它们都是'post'类型...不过感谢您的回复!
    猜你喜欢
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2017-04-12
    • 2023-01-17
    • 1970-01-01
    相关资源
    最近更新 更多