Intereting Posts
Комментарий Уокер против Обратной связи Почему пользовательский тип сообщений WordPress не отображается в панели администратора? Как использовать родительские функции темы в дочерней теме functions.php файл? IIRF + IIS 6 + WordPress не возвращает ошибку 404 Если тип Post использует боковую панель («дерево») Остановить перенаправление WordPress из / ключевое слово в / some-post-contains-keyword / Использование клонирования wp_post для пользовательского типа сообщения Фильтр медиа-библиотеки возвращает неопределенную функцию get_current_screen Продать любое изображение из пользовательского типа отправки Виджеты с группами / суб-виджетами? Виджет в виджетах? Показать изображения категорий детей удалить базовый слизень из иерархического пользовательского типа сообщения Добавить массив идентификаторов сообщений в категорию? Custom Post Type Plugin: Где я могу разместить шаблон? wp-admin перенаправляется на домашнюю страницу (localhost)

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

У меня есть два массива, которые фильтруют и упорядочивают сообщения двумя разными пользовательскими ключами. Я должен сделать это, чтобы объединить массивы и упорядочить их своими собственными ключами, чтобы не иметь сначала список массива 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' => '!=' ) ); 

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