Intereting Posts
wp-admin: сортировка пользователей по фамилии Обновление Nightmare – Нет сообщений, разрешений и не может создать новое сообщение Не удается войти в систему: «ОШИБКА: файлы cookie заблокированы или не поддерживаются вашим браузером. Вы должны включить файлы cookie для использования WordPress. " Измените текст кнопки «пустой мусор»? Как добавить кнопку публикации сразу при редактировании пользовательских сообщений WordPress? Размер базы данных mySQL большой, но размер таблиц меньше Как записать условный флажок для персонализированного флажка в метаданных с установленным изображением Предотвратите включение пяти разных копий jquery на каждую страницу Как создать эту постоянную ссылку: post_type / postname / custom_inner_page Как получить категорию продуктов WooCommerce по ID? Внутренние ссылки на страницы в PHP? Вызов apply_filters на незарегистрированных крючках wpdb :: prepare () не работает Должен ли плагин WordPress заполнять глобальную среду JS? Где найти изменения WordPress API для каждой выпущенной версии

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 на количество изображений, которое вы хотите на сайт, и уменьшить размер изображений, которые вы хотите.