Intereting Posts
Как переопределить количество элементов по умолчанию, которое будет указано на странице archive.php? получить медиа-теги приложения или проверить, есть ли у него медиа-тег? Ожидающий статус по умолчанию для определенной роли Выберите должности, у которых нет отношений в пользовательской таксономии Переназначить WP 404 на html Как остановить повторное заполнение формы на странице обновления Пользовательский короткий код регистрации пользователя – проблема с заголовком перенаправления Разработка функции get_template_part в functions.php Как поймать все ошибки PHP с помощью специального обработчика ошибок? wp_nav_menu не выделяет текущую категорию при просмотре одной записи Изменение класса списка страниц Отладка в WordPress запрос в category.php повторяет сам и плагин отображает над плагинами страницу Новая установка не может быть найдена из-за htaccess исходного сайта, отличного от WordPress.

Объединение двух запросов в multisite и запрос результата

Я пытаюсь объединить запросы с разных сайтов моей многопользовательской установки. Объекты одинаковы. По-другому я получаю сообщения, но для каждого сайта. Ниже приведена попытка получить объединенный результат для бесшовного чтения. Но ничего не выходит. Слишком много дней пробую разные вещи, и я ослеплю свои ошибки 😉 И да, это в коротком коде. Спасибо за любую помощь.

// Shortcode to output events based on meta key date function events_vc( $atts, $content = null ) { extract( shortcode_atts( array ( 'compare' => '>=', 'posts_per_page' => '-1', 'order' => 'ASC', 'el_class' => '', ), $atts )); // create an array for all ids $events_ids = array(); // switch to the blog with id 3 and get posts switch_to_blog(3); $args = array( 'post_type' => 'events', 'post_status' => 'publish' ); $events_ft = get_posts( $args ); restore_current_blog(); // getting posts on the current blog $args = array( 'post_type' => 'events', 'post_status' => 'publish' ); $events = get_posts( $args ); // combining posts $events_ids = array_merge( $events_ft, $events ); // doing the query $all_events = new WP_Query( array( 'post__in' => $events_ids, 'meta_key' => 'date_debut', 'orderby' => 'meta_value', 'order' => $order, 'posts_per_page' => $posts_per_page, 'meta_query' => array( array( 'key' => 'date_debut', 'value' => date('Ymd'), 'compare' => $compare == '&lt;' ? '<' : $compare, 'type' => 'DATE', ), ), )); // the final loop $output = ''; if ( $all_events->have_posts() ) { $output .= '<div class="events-list '.$el_class.'">'; while ( $all_events->have_posts() ) : $all_events->the_post(); ob_start(); get_template_part('components/modules/event'); $output .= ob_get_clean(); endwhile; $output .= '</div>'; } return $output; wp_reset_postdata(); } add_shortcode( 'events_vc_output', 'events_vc'); 

// EDIT Я попробовал другой подход. Теперь я получаю результаты, но с проблемой вывода.

 // Shortcode to output events based on meta key date function events_vc( $atts, $content = null ) { extract( shortcode_atts( array ( 'compare' => '>=', 'posts_per_page' => '-1', 'order' => 'ASC', 'el_class' => '', ), $atts )); // create array for combining events $all_events = array(); // args for the queries $events_args = array( 'post_type' => 'events', 'post_status' => 'publish', 'meta_key' => 'date_debut', 'orderby' => 'meta_value', 'order' => $order, 'posts_per_page' => $posts_per_page, 'meta_query' => array( array( 'key' => 'date_debut', 'value' => date('Ymd'), 'compare' => $compare == '&lt;' ? '<' : $compare, 'type' => 'DATE', ), ), ); // get events from ft site switch_to_blog(3); $events_ft = get_posts( $events_args ); restore_current_blog(); // get events from current site $events = get_posts( $events_args ); // combining the events $all_events = array_merge( $events_ft, $events ); // display events $output = ''; $output .= '<div class="events-list '.$el_class.'">'; foreach( $all_events as $event ) { echo $event->post_title; ob_start(); get_template_part('components/modules/event'); $output .= ob_get_clean(); } $output .= '</div>'; return $output; } add_shortcode( 'events_vc_output', 'events_vc'); 

Я могу отобразить заголовок, и мне нужно изменить свой шаблон. Я все еще боюсь получить поля ACF через этот метод. Print_r ($ all_events) возвращает объекты без полей ACF.

// EDIT Мне нужно объявить global $post; и setup_postdata($post); в цикле foreach, чтобы получить все функции шаблона. Теперь есть какая-то работа по сортировке результатов.

Один последний вопрос: URL-адрес постоянной ссылки указывает на основной сайт для всех объектов.

 // Shortcode to output events based on meta key date function events_vc( $atts, $content = null ) { extract( shortcode_atts( array ( 'compare' => '>=', 'posts_per_page' => '-1', 'order' => 'ASC', 'el_class' => '', ), $atts )); global $post; // create array for combining events $all_events = array(); // args for the queries $events_args = array( 'post_type' => 'events', 'post_status' => 'publish', 'meta_key' => 'date_debut', 'orderby' => 'meta_value', 'order' => $order, 'posts_per_page' => $posts_per_page, 'meta_query' => array( array( 'key' => 'date_debut', 'value' => date('Ymd'), 'compare' => $compare == '&lt;' ? '<' : $compare, 'type' => 'DATE', ), ), ); // get events from ft site switch_to_blog(3); $events_ft = get_posts( $events_args ); restore_current_blog(); // get events from current site $events = get_posts( $events_args ); // combining the events $all_events = array_merge( $events_ft, $events ); // display events $output = ''; $output .= '<div class="events-list '.$el_class.'">'; foreach( $all_events as $post ) { setup_postdata($post); ob_start(); get_template_part('components/modules/event'); $output .= ob_get_clean(); } $output .= '</div>'; return $output; } add_shortcode( 'events_vc_output', 'events_vc'); 

// EDIT Это предыдущее редактирование вообще не работает. Кажется, это работает, потому что у меня были одинаковые сообщения в корзине на моем основном сайте. Поэтому у меня нет никаких данных, кроме названия через шаблон (только для сайта, который не является текущим). И все-таки проблема с permalink.

Solutions Collecting From Web of "Объединение двух запросов в multisite и запрос результата"