Я пытаюсь получить отсортированный список сообщений, используя 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
Я не могу использовать порядок по числовому значению и алфавитному значению, поскольку имена состояний будут случайными.
Я нашел один пост здесь , он использует mera_query_orderby
.Я не могу найти документацию для этого и попробовал, но это не работает.Он возвращает сообщения, заказанные по ID.
Любая помощь будет оценена.Спасибо
РЕДАКТИРОВАТЬ:
Я добавил meta_query_orderby
фильтры в functions.php
И обновленный код, который я использовал из ПРИМЕРА 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")
)
)
));