Erhalten Sie Beiträge von Netzwerk (Multisite)

Der folgende Code gibt alle Posts aus dem Netzwerk an. Was ich erreichen möchte:

Solutions Collecting From Web of "Erhalten Sie Beiträge von Netzwerk (Multisite)"

Ich habe ein Plugin erstellt, das etwas ähnliches tut (Multisite Post Display https://wordpress.org/plugins/multisite-post-reader/ ). Es zeigt Beiträge von allen Multisite-Unterseiten an.

Der Code dort könnte hilfreich sein für das, was Sie tun. Sie können sich gerne damit befassen und den Code verwenden, um bei Ihrem Projekt zu helfen. (Schließlich habe ich die Codeschnipsel anderer Leute benutzt, um sie zu entwickeln.)

Ich habe es geschrieben, nachdem ich Multisite Media Display gemacht habe, da ich eine Möglichkeit suchte, Medien von Unterwebsites auf einer Seite anzuzeigen, und konnte kein Plugin finden, das das getan hat. Beide waren nützlich, um veröffentlichte Medien und Inhalte von meiner Multisite aus zu überwachen.

Kostenlos, Open Source und all das. Ich hoffe, es ist hilfreich.

Ricks Antwort ist sicherlich hilfreich, aber ich wollte meinen Ansatz teilen, der eine Adoption oder Erweiterung Ihres Codes ist:

Zuerst erhalten Sie eine Liste ausgewählter Blogs in Ihrem Netzwerk .:

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

Sie können Websites auch ausschließen, indem 'site__not_in' in den Argumenten von get_sites() 'site__not_in' .

Konvertiere das $sitesObj Objekt in ein Array:

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

Dann initialisiere einen Zähler, um die Gesamtzahl der anzuzeigenden Beiträge zu steuern, und wechsle zu jedem ausgewählten Blog, um die Schleife mit deinen benutzerdefinierten Argumenten auszulösen:

 $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(); } 

Ich hoffe das hilft 🙂