Intereting Posts
Установленный WordPress с неаккуратным. Должен ли я обновлять вручную или с помощью Softaculous? Как получить название моей должности для работы с апострофом (?)? Не удается войти в WordPress, несмотря на изменение пароля на то, что известно непосредственно в MySQL или с помощью функции «Сброс пароля по электронной почте» Пользовательская позиция постконтактного метаболизма сообщение переднего конца с несколькими изображениями для загрузки? Как использовать PHP-код на странице? Каков правильный способ для плагинов создавать таблицы со специальными соображениями кодировки / сопоставления? Использование памяти при запросе пользователей Есть ли способ запустить upgrade.php для одного блога? Замена функциональности меню WordPress плагином Почему этот код jQuery не работает? Должен ли я беспокоиться о внедрении SQL при использовании wp_insert_post? Исключить липкие сообщения из основного разрыва запроса Pagination Как я могу получить значения из wp_commentmeta? Получить продолжительность с момента регистрации

Заказ сообщений по массиву

У меня есть запрос, который возвращает несколько различных пользовательских типов сообщений. Я хочу заказать массив сообщений по содержимому массива типов сообщений; например, array('post', 'video', 'testimonial'..... );

Массив, порядок, фиксирован.

Как я могу управлять этим, не делая другого запроса для каждого типа сообщения?

Solutions Collecting From Web of "Заказ сообщений по массиву"

Это невозможно с помощью родного API, и вам, вероятно, будет довольно плохо взломать SQL для него.

Это было бы довольно тривиально, чтобы повторно сортировать сообщения, подобные этому после того, как они будут восстановлены с помощью PHP-кода. если вы используете get_posts() вы получаете массив, которым вы манипулируете уже, и для массива результатов объекта WP_Query доступен в общедоступном свойстве $posts .

Обратите внимание, это предполагает, что вам не нужно разбивать страницы на этот запрос. В этом случае вещи становятся очень грязными очень быстро и обратно в гору пользовательского SQL.

Вы можете использовать цикл foreach для отображения вашего контента в этом порядке. цикл в значениях в вашем массиве, в каждом цикле есть оператор foreach который перебирает ваши сообщения и проверяет, равен ли тип post равным значению в вашем массиве, в котором он сейчас находится.

 $query = //whatever your query is; $array = //your array foreach ($array as $value) { foreach ($query as $post) { if ($post->post_type == $value) { //code to show that thing } } } 

Благодаря mrben522 для указания пути;

 <? $args = array( 'post_type' => 'any', 'category__in' => wp_get_post_categories($post->ID), 'posts_per_page' => 7, 'post__not_in' => array($post->ID) , ); $related = new WP_Query($args); if( $related->have_posts() ) : ?> <ul class="related-posts"> <? $array = array ('article', 'post', 'video', 'webinar', 'factsheet','whitepaper', 'casestudy'); foreach ($array as $value) { while( $related->have_posts() ) : $related->the_post() ; if ($post->post_type == $value) { get_template_part('template-parts/content', 'related'); } endwhile; rewind_posts(); } ?> </ul> <? endif; wp_reset_postdata(); ?>