查询帖子中排序受操作系统影响吗?

时间:2013-07-30 作者:user1385827

我有以下发帖查询:

query_posts( array(
      \'post_type\' => \'maze-schedule\',
      \'order\' => \'ASC\',
      \'orderby\' => \'meta_value_num\',
      \'meta_key\' => \'course_date\'
    ) );
    ?>
这很好,帖子是按我的“course\\u date”元值排序的。

然而,当存在两个具有相同“course\\u date”元值的帖子时,它们在Mac上访问我的网站时按一个顺序显示,在PC上访问时按另一个顺序显示。

操作系统会对结果的显示方式产生任何影响吗?我猜当orderby遇到两个具有相同值的帖子时,WP会恢复到某个默认顺序吗?

非常感谢。

2 个回复
SO网友:Krzysiek Dróżdż

当这两个值相同时orderby 声明并没有说明应该如何订购。

在SQL世界中,顺序不是一组数据的固有属性。因此,除非使用order BY子句查询数据,否则RDBMS不能保证数据将以特定的顺序返回,甚至是以一致的顺序返回。

顺序可能会有所不同,具体取决于存储引擎等。

另外,有可能会以ASC ID顺序返回行,但这只是一个机会。

SO网友:Charles Clarkson

操作系统会对结果的显示方式产生任何影响吗?

这取决于。。。

web服务器可通过web浏览器检测客户端计算机操作系统,并可根据客户端操作系统从web服务器发送不同的结果。

然而query_posts() 函数不会检查(或响应)正在使用哪个客户端操作系统发出请求。

从…起\\WordPress\\wp-includes\\query.php :

/**
 * Set up The Loop with query parameters.
 *
 * This will override the current WordPress Loop and shouldn\'t be used more than
 * once. This must not be used within the WordPress Loop.
 *
 * @since 1.5.0
 * @uses $wp_query
 *
 * @param string $query
 * @return array List of posts
 */
function query_posts($query) {
    $GLOBALS[\'wp_query\'] = new WP_Query();
    return $GLOBALS[\'wp_query\']->query($query);
}

结束