Auf Multisite: Schleife, um die ersten vier Bilder der letzten Beiträge im gesamten Netzwerk anzuzeigen

Ich möchte die ersten vier Bilder aus Posts in einem WordPress-Netzwerk anzeigen.

In Ottos Tutorial zu seiner Bildergalerie empfahl er, die folgenden Bilder zu verwenden, um Bilder aus den letzten Posts zu erhalten. Abfrageparameter:

$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, ) ); 

Dann folgt in der Schleife, um die Anhänge anzuzeigen:

 foreach ($images->posts as $image) { echo ''; 

Ich versuche das Gleiche in einem Netzwerk zu tun.

Ich habe damit angefangen, den gleichen Code zusammen mit dem “Sitewide-Tags-Plugin” zu verwenden, aber die Bilder werden nicht für Unterseiten angezeigt, sondern nur für Bilder, die aus dem Haupt-Website-Dashboard erstellt wurden.

Wäre es viel mehr Arbeit, dasselbe über ein Netzwerk zu erreichen?

Vielen Dank.

Solutions Collecting From Web of "Auf Multisite: Schleife, um die ersten vier Bilder der letzten Beiträge im gesamten Netzwerk anzuzeigen"

Ich hatte dieses Mittagessen nicht zu tun, also habe ich eine kleine function dafür zusammengestellt. Die Hauptsache ist, alle Seiten innerhalb des Netzwerks und ihre ID zu bekommen. Dafür benutze ich eine einfache SQL-Abfrage über die class wpdb :

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

Es wird eine Liste von blog_id . Wenn ich alle Seiten habe, site_ids eine foreach auf den site_ids und switch_to_blog so aus:

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

Im aktuellen Blog verwende ich einen einfachen get_posts , der die Anzahl der Attachmets zurückgibt.

Eine weitere foreach für den Post, den ich von get_posts , die array_push benutzt, um post_date als Schlüssel und post_id als Wert zu setzen. Das post_date dient dazu, dass der Post im Array eindeutig ist und später die Bilder nach dem Timestamp sortiert werden.

Als nächstes werden die Daten, die wir mit post_date als Schlüssel und post_id als Wert eingerichtet haben, post_date , um die Bilder mit der function wp_get_attachment_image () zu erhalten . Das verwendet auch array_push , um den Zeitstempel als Schlüssel und das Bild als Wert hinzuzufügen. Wir benötigen den Zeitstempel, um die Reihenfolge der Bilder zu sortieren. (Neueste zuerst) mit Krsort, bevor wir die Bilder aussprechen .

Hier ist der vollständige Code:

 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; } } 

Und du nennst es einfach so:

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

Hier können Sie 4, wie viele Bilder Sie pro Website und Größe der Bilder, die Sie möchten, ändern.