Intereting Posts

Получить сообщения из сети (Multisite)

Следующий код содержит все сообщения из сети. То, что я пытаюсь достичь:

Solutions Collecting From Web of "Получить сообщения из сети (Multisite)"

Я создал плагин, который делает что-то подобное (например, Multisite Post Display https://wordpress.org/plugins/multisite-post-reader/ ). Он отображает сообщения из всех субсайтов нескольких субсайтов.

Этот код может быть полезен для того, что вы делаете. Вы можете вникнуть в него и использовать код, чтобы помочь с вашим проектом. (В конце концов, я использовал фрагменты кода других людей для его разработки.)

Я написал это после того, как я сделал Multisite Media Display, так как мне нужен способ отображения мультимедиа из подсайтов на одной странице и не мог найти никакого плагина, который сделал это. Оба были полезны для мониторинга размещенных медиа и контента из моего многопользовательского режима.

Свободный, открытый источник и все такое. Надеюсь, это полезно.

Ricks Answer, безусловно, полезно, но я хотел бы поделиться своим подходом, который является усыновлением или расширением вашего кода:

Сначала получите список избранных блогов в вашей сети .:

 $args = array('site__in' => array(2, 3, 6)) $sitesObj = get_sites($args); $sites = object_to_array($sitesObj); 

Вы также можете исключить сайты, используя 'site__not_in' в аргументах get_sites() .

Преобразуйте объект $sitesObj в массив:

 $sites = object_to_array($sitesObj); object_to_array($object) { if (!is_object($object) && !is_array($object)) { return $object; } return array_map('object_to_array', (array) $object) ; } 

Затем инициализируйте счетчик, чтобы контролировать общее количество сообщений для показа и переключения на каждый выбранный блог, чтобы запустить цикл с вашими настраиваемыми аргументами:

 $postCounter = 0; $maxPosts = 5; // total number of posts to show foreach ($sites as $site) { switch_to_blog($site['blog_id']); $args = array( 'post_type' => 'post', // or custom post type 'posts_per_page' => 2, // number of posts per blog 'order' => 'DESC', 'orderby' => 'date' // you could also use 'rand' here ); $loop = new WP_Query($args); if ($loop->have_posts()) : while ($loop->have_posts() && $counter < $maxPosts) : $loop->the_post(); // your output endwhile; endif; restore_current_blog(); } 

Надеюсь, это поможет 🙂