【发布时间】:2019-10-04 16:24:21
【问题描述】:
我正在尝试使用 get_posts 按元值排序帖子列表,元值的顺序在数组中给出。
这是我目前拥有的。
$stores = get_posts(array(
'post_type' => 'stores',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids', // I only need the ID's of posts
'orderby' => 'meta_value',
'meta_key' => 'state',
'order' => 'ASC'
));
这将返回按meta_value 按字母升序排序的帖子数组。
我有一个'meta_key' => 'state' 的可能值数组,即array('State1', 'State2', 'State3')
我想设置顺序,以便所有具有元值 State1 的商店首先出现,然后是 State2,然后是 State3
我不能使用数值和字母顺序,因为州名是随机的。
我找到了一个帖子here,它使用的是mera_query_orderby。我找不到任何文档并尝试了它,但它不起作用。它返回按 ID 排序的帖子。
任何帮助将不胜感激。谢谢
编辑:
我在functions.php中添加了meta_query_orderby过滤器
我在示例 2 中使用的更新代码如下:
$stores = get_posts(array(
'post_type' => 'stores',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'state', // Custom field key.
'value' => array("CState1", "AState2", "BState3")
)
),
'meta_query_orderby' => array(
array(
'key' => 'state', // (required) Custom field key.
'value' => array("CState1", "AState2", "BState3")
)
)
));
【问题讨论】:
-
我已经检查了您提供的链接并在我的本地系统上执行了测试,它适用于
post帖子类型。能否请您提出您针对参考链接修改的代码,以便我可以尝试帮助您。? -
@MominIqbal 我已经添加了我在示例帖子中使用的代码。我使用
get_posts而不是WP_Query。我认为这不应该是它不起作用的原因。 -
删除所有字母 -
array('State1', 'State2', 'State3')到array(1, 2, 3),然后就可以轻松订购了。
标签: php wordpress sorting customization