Intereting Posts
Пользовательские типы сообщений Пользователь может управлять одной страницей, доступной для всех? Удаление методов контакта с пользователем работает с functions.php, но не с плагина Перенаправление пользователя на вход на основе роли WP 3 – Multi-Site Гость Автор – Как показывать сообщения на странице автора / архива Пользовательские возможности для одного пользователя Показывать контент только в том случае, если участник оставил комментарий получить размер пользовательского изображения Передача параметров URL на страницы WordPress и довольно URL Полностью автоматизированная установка и активация темы через плагин Разрешения при попытке обновления WordPress Условно Убрать ссылку меню навигации, если сеанс активен Как изменить текст по умолчанию для определенного типа сообщения Тот же option_id = 0 для 2 опций в wp_options? Как удалить всплывающее объявление «Powered by WordPress» в wp-login.php?

Объединение нескольких объектов wp_query

У меня есть код ниже для многоуровневой установки. Он отлично работает, но мне нужно объединить каждый объект цикла WP_Query из каждого мультисайта вместе для использования в другом шаблоне с циклом WordPress. Это возможно. Я попытался слить объекты с помощью:

$obj_merged = (object) array_merge((array) $obj1, (array) $obj2); 

Но это не работает, поскольку объекты содержат функции. Идеи?

 <?php // Set up global variables. Great global $wpdb, $blog_id, $post, $merged_loop; // Get a list of blogs in your multisite network $blogs = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM ftc_blogs ORDER BY blog_id" ) ); // Iterate through your list of blogs foreach ($blogs as $blog){ // Switch to the next blog in the loop. // This will start at blog_id == 1 because of the ORDER BY statement. switch_to_blog($blog->blog_id); // Get the 5 latest posts for the blog and store them in the $query variable. $args = array( 'post_type' => array('post', 'page'), 'category_name' => 'dashboard', 'posts_per_page' => 5 ); $loop = new WP_Query( $args ); // need to merge $loop data into $merged_loop for use in template. // Switch back to the main blog restore_current_blog(); } endif; ?> 

Solutions Collecting From Web of "Объединение нескольких объектов wp_query"

Если вам просто нужны сообщения каждого объекта WP_Query, вы можете сделать что-то вроде этого:

 <?php // fetch blogs here $all_posts = array() foreach($blogs as $b) { switch_to_blog($b->blog_id); $query = new WP_Query(/* your args here */); if($query->have_posts()) $all_posts = array_merge($all_posts, $query->posts); // posts are stored in the `posts` property restore_current_blog(); // FYI: this tends to slow things down } 

Похоже, в этом случае вам может быть лучше просто использовать get_posts вместо создания вручную создания объекта WP_Query. Вам просто нужен массив результатов, что и делает get_posts – конечно, он использует WP_Query за кулисами.

 <?php // fetch blogs here $all_posts = array() foreach($blogs as $b) { switch_to_blog($b->blog_id); $posts = get_posts(/* your args here */); if($posts) $all_posts = array_merge($all_posts, $posts); restore_current_blog(); } 

Вы должны знать, что такие функции, как get_post_meta и т. П., Не будут работать так, как вы хотите, когда вы, наконец, зайдете через сообщения – у вас почти всегда будет работать каждый пост-объект.