WordPress中get_posts按title排序失效问题排查求助
解决WordPress get_posts按标题排序异常的问题
嘿,这个问题其实是个很容易踩的小坑——你犯了一个参数拼写错误!
问题根源对比
看你给出的两段get_posts查询代码:
- 出问题的查询里写的是:
'order_by' => 'title' - 正常工作的查询里写的是:
'orderby' => 'title'
WordPress的WP_Query(get_posts底层依赖的查询类)接受的排序参数名是**orderby**(没有下划线),而不是order_by。当你传入错误的参数名时,WordPress会直接忽略这个排序设置,转而使用默认的排序逻辑,这就导致你看到的结果完全不符合预期的标题升序排列。
这也能解释为什么你手动执行SQL语句能得到正确结果——数据库本身的排序逻辑没问题,问题出在WordPress没有正确识别你的排序指令。
修正方案
只需要把错误的参数名改成正确的即可:
$args = array( 'post_type' => array(), 'orderby' => 'title', // 修正参数名:order_by → orderby 'order' => 'ASC', 'post_status' => 'publish', 'posts_per_page' => -1, 'meta_query' => array(), );
后续填充post_type和meta_query的逻辑不会影响排序效果,只要参数名正确,就能按照标题升序返回结果了。
内容的提问来源于stack exchange,提问作者E. Steev Ramsdell
相关产品推荐
相关产品推荐

