Вы должны иметь возможность сортировать по мета-значению, используя:
$q = new WP_Query(
// Other query params e.g. post type...
array(
'meta_key' => 'announcement_category',
'orderby' => 'meta_value_num',
'order' => 'ASC',
)
);
На основании этого ответа .
Однако я думаю, что ваша проблема заключается в том, что вы Как уже отмечалось, announcement_category
- это массив, а не число, по которому вы не сможете отсортировать.
Если вы не можете изменить announcement_category
на число, а не на массив, вы можете использовать usort для сортировки результатов вашего запроса WordPress перед отправкой ответа API:
$arr1 = array(
array('announcement_category'=>array(216)),
array('announcement_category'=>array(218)),
array('announcement_category'=>array(202)),
array('announcement_category'=>array(300)),
);
function sortByOrder($a, $b) {
return $a['announcement_category'][0] - $b['announcement_category'][0];
}
usort($arr1, 'sortByOrder');
print_r($arr1); // Ordered ascendingly
В качестве альтернативы, вы можете использовать javascript на стороне клиента для сортировки требуемый ответ:
announcements.sort(function (a, b) {
return a[announcement_category][0] - b[announcement_category][0];
});
Сортировка массива