@jensen6720185

Get_posts + присвоение значения + сортировка по нему?

Как решить такую ситуацию, есть список id постов, например 20000, 20001, 20002 и тд после get_posts
я хочу через foreach добавить к каждому информацию на основе мета поля этого поста и сортировать:

<?php
// К примеру абстрактные id постов после выборки
$posts = array(20000, 20001, 20002);
$new_posts = array();

foreach ($posts as $post_id) {
    $post_addr = get_post_meta($post_id, 'post_address', true);
    
    if ($post_addr = "NY") {
        $new_posts[] = array(
            'id'        => $post_id, 
            'addr_val'  => 10;
        );
    } else if ($post_addr = "IT") {
        $new_posts[] = array(
            'id'        => $post_id, 
            'addr_val'  => 14;
        );
    } else if ($post_addr = "GM") {
        $new_posts[] = array(
            'id'        => $post_id, 
            'addr_val'  => 18;
        );
    }
}


Как мне сортировать массив $new_posts через произвольное поле от меньшего к большему?
Или может иначе добавлять значние как ключ а значение id?
Спасибо
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Так у get_posts же есть параметры для сортировки по произвольным полям. Они не подошли?

Пример:
$args = array(
    'orderby'   => 'meta_value',
    'meta_key'  => 'post_address',
);
$myposts = get_posts($args);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alvvi
@alvvi
export default apathy;
Как мне сортировать массив $new_posts через произвольное поле от меньшего к большему?

Произвольное поле тут посредственную роль играет, вы же простой массив получаете в $new_posts.
Стандартно сортируйте средствами PHP

Пример:
usort($new_posts, function($a, $b) {
   return $a['addr_val'] - $b['addr_val'];
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы