Intereting Posts
Ошибка проверки ссылки на формат сообщения Почему следующие страницы загружают один и тот же контент, а не старые статьи? Плагин динамического рейтинга для добавления в любом месте Я нарушаю лицензию WordPress с помощью плагина с ярлыками? изменить URL-адрес изображения продукта в виджетах и ​​странице магазина Как переопределить функцию в functions.php родительской темы? Панель администратора – пользовательское меню Подлинник LINK Uncaught TypeError: Невозможно прочитать свойство «ajax» неопределенного get_posts и wp_autop (удалить фильтр) Как вставлять видео YouTube в сообщениях без добавления рекомендуемых видео в конце? Добавление функции IF в текущую пользовательскую категорию. Если у ребенка есть Как добавить поиск в меню? Удалить возможность для других пользователей просматривать администратора в списке пользователей? Удалить слизень из пользовательского URL-адреса типа отправки? Как удалить текущую тему WordPress и установить новую тему

Объединить массивы и набор заказов и подмножество как один

У меня есть два массива, которые фильтруют и упорядочивают сообщения двумя разными пользовательскими ключами. Я должен сделать это, чтобы объединить массивы и упорядочить их своими собственными ключами, чтобы не иметь сначала список массива a, а затем список массива b.
Я пробовал разные подходы, но никто не дал мне хорошего результата. Последнее, что я попробовал, было usort, но это в основном бесполезно (две объединенные массивы уже были заказаны так: сначала он получает второй массив, потому что у него нет настраиваемого ключа первого массива).

$series_post = get_posts(array( 'numberposts' => -1, 'post_type' => 'lyric', 'meta_query' => array( array('key' => 'sd_game_series','value' => '','compare' => '!='), array('key' => 'sd_game_type','value' => '-Original-','compare' => '!=')),//gets all post with series 'orderby' => array( 'sd_game_series' => 'ASC', 'sd_game' => 'ASC', 'sd_title' => 'ASC') )); $games_post = get_posts(array( 'numberposts' => -1, 'post_type' => 'lyric', 'meta_query' => array( array('key' => 'sd_game_series','value' => '','compare' => '='), array('key' => 'sd_game_type','value' => '-Original-','compare' => '!=')),//gets all post without series 'orderby' => array( 'sd_game_series' => 'ASC', 'sd_game' => 'ASC', 'sd_title' => 'ASC') )); $merged_arrays = array_merge( $series_post, $games_post ); //NOW I NEED TO USORT THE MERGED ARRAYS usort( $merged_arrays, function( $a, $b ){ // sort first by series name $compare = strnatcmp(get_post_meta($a->ID, 'sd_game_series', true), get_post_meta($b->ID, 'sd_game_series', true)); // if series names are identical, sort by game name if(!$compare) { return strnatcmp(get_post_meta($a->ID, 'sd_game', true), get_post_meta($b->ID, 'sd_game', true)); }else{ return $compare; } }); $posts = $merged_arrays; 

Первый массив имеет значение sd_game_series и сначала сортирует его, второй не имеет sd_game_series и сортирует только sd_game (sd_game_series – это подмножество sd_game, поэтому каждое сообщение с sd_game_series также имеет значение в sd_game, но не каждый sd_game имеет также sd_game_series).
Мне в основном нужно сортировать результаты двух массивов в алфавитном порядке между собой.
Возможно ли это?

Вы можете проверить get_post_meta перед args , Пример:

 // Get post meta $game = get_post_meta($post->ID, 'sd_game', true); $game_series = get_post_meta($post->ID, 'sd_game_series', true); // Check which meta if( !empty( $game ) ) { $key = 'sd_game'; } else { $key = 'sd_game_series'; } $posts = get_posts(array( 'numberposts' => -1, 'post_type' => 'lyric', 'meta_query' => array( array( 'key' => $key, 'value' => '', 'compare' => '!=' ), array( 'key' => 'sd_game_type', 'value' => '-Original-', 'compare' => '!=' ) ); 

Надеюсь, это поможет вам;)