On Multisite: Loop для отображения первых четырех изображений последних сообщений по всей сети

Я хотел бы отображать первые четыре изображения из сообщений в сети WordPress.

В учебнике галереи изображений Отто он рекомендовал использовать следующие, чтобы получать изображения из последних сообщений. Параметры запроса:

$images = new WP_Query( array( 'post_parent' => get_the_ID(), 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID', 'posts_per_page' => 4, 'post__not_in' => array($thumb_id), 'update_post_term_cache' => false, ) ); 

Затем в цикле для отображения вложений:

 foreach ($images->posts as $image) { echo '<div class="gallery-image"><a href="'.get_permalink($image->ID).'">'.wp_get_attachment_image( $image->ID, 'gallery-overview-thumb' ).'</a></div>'; 

Я пытаюсь сделать то же самое в сети.

Я начал с того, что пытался использовать тот же код вместе с «Sitewide Tags Plugin», но он не будет показывать изображения для подсайтов, а только изображения, созданные с панели инструментов основного сайта.

Было бы намного больше работать, чтобы работать так же, как в сети?

Спасибо.

Solutions Collecting From Web of "On Multisite: Loop для отображения первых четырех изображений последних сообщений по всей сети"

Мне нечего было делать этим обедом, поэтому я собрал для этого небольшую функцию. Главное – получить все сайты в сети и их идентификатор. Для этого я использую простой SQL-запрос через класс wpdb :

 $site_ids = $wpdb->get_results( "SELECT blog_id from $wpdb->blogs" ); 

Он вернет список blog_id . Когда у меня есть все сайты, я запускаю foreach на site_ids и switch_to_blog следующим образом:

 // Within the foreach switch_to_blog( $site_id->blog_id ); 

В текущем блоге я запускаю простые get_posts, которые возвращают количество attachmets.

Еще один foreach на почте, которую я получаю от get_posts которая использует array_push для установки post_date как ключа и значения post_id . Post_date – это сообщение, которое должно быть уникальным в массиве, а затем сортировать изображения по метке времени.

Следующее – это post_date данные, которые мы установили с post_date как ключ, и post_id как значение, чтобы получить изображения с функцией wp_get_attachment_image () . Это также будет использовать array_push чтобы добавить array_push метку в качестве ключа, а изображение – как значение. Нам нужна отметка времени для сортировки порядка на изображениях. (Последний сначала), используя krsort, прежде чем мы выберем изображения.

Вот полный код:

 function wpse_77816_ms_last_images( $num_of_images, $size ) { global $wpdb; // Setup array $images = array(); $site_ids = $wpdb->get_results( "SELECT blog_id from $wpdb->blogs" ); foreach ( $site_ids as $site_id ) { // Swtch to blog // http://codex.wordpress.org/WPMU_Functions/switch_to_blog switch_to_blog( $site_id->blog_id ); $posts = get_posts( array( 'numberposts' => $num_of_images, 'post_type' => 'attachment', 'post_mime_type' => 'image' )); // Setup array $data = array(); foreach( $posts as $post ) { // return array with post_id and post_dates $data[strtotime( $post->post_date )] = $post->ID; } // Get the images foreach( $data as $d => $id ) { $images[$d] = wp_get_attachment_image( $id, $size ); } // Restor switch_to_blog restore_current_blog(); } // Sort on high to low (time) krsort( $images ); foreach( $images as $image ) { echo $image; } } 

И вы просто называете это:

<?php wpse_77816_ms_last_images( 4, 'gallery-overview-thumb' ); ?>

Здесь вы можете изменить 4 на количество изображений, которое вы хотите на сайт, и уменьшить размер изображений, которые вы хотите.