WordPress Multisite: Habe die gleiche Kopf- und Fußzeile des Hauptblogs auf allen Unterblogs

Ich versuche folgendes zu tun:

Ich habe einen Main-Blog und Dutzende von Subblogs. Ich möchte, dass alle Subblogs das gleiche Thema (oder Kind-Thema, noch nicht sicher) verwenden, aber die gleichen Navigationselemente des Mainblogs auf allen Subblogs haben? Das gleiche für die Fußzeile.

Wie habe ich das gemacht?

Das ist mein Haupt-Blog und meine Landing-Page

Bildbeschreibung hier eingeben

Wenn ich auf Subblogs klicke und einen Subblog wähle, möchte ich nur, dass der Inhaltsbereich betroffen ist, die Kopfzeile und die Fußzeile sollten über das gesamte Netzwerk gleich bleiben.

Bildbeschreibung hier eingeben

Im Content-Bereich eines Subblogs möchte ich dann die Seiten und Beiträge des Subblogs verwenden.

Was ist der richtige Weg?


Aktualisieren:

    '', 'child_of' => 0, 'date_format' => get_option('date_format'), 'depth' => 1, 'echo' => 0, 'exclude' => '42,311', 'include' => '', 'link_after' => '', 'link_before' => '', 'post_type' => 'page', 'post_status' => 'publish', 'show_date' => '', 'sort_column' => 'menu_order, post_title', 'title_li' => '', 'walker' => '' ); $menu = wp_list_pages( $args ); update_option('network_menu', $menu); echo $menu; ?>

In meinem Kinder-Thema mache ich:

 

Solutions Collecting From Web of "WordPress Multisite: Habe die gleiche Kopf- und Fußzeile des Hauptblogs auf allen Unterblogs"

Sie könnten die function switch_to_blog() verwenden

Schaltet das aktive Blog um, bis der Benutzer die function restore_current_blog () aufruft. Diese function ist nützlich, wenn Sie Posts oder andere Informationen aus anderen Blogs abrufen möchten. Sie können dann nach der Verwendung von restore_current_blog () zurückwechseln. Mit dieser function werden keine Plugins geladen, die nur auf dem Blog ausgeführt werden, zu dem Sie wechseln.

Sie können also Ihr Design so bearbeiten, dass immer einige Header- und Footer-Inhalte aus dem Hauptblog abgerufen werden, der innere Inhalt der Sub-Blogs jedoch beibehalten wird.

Setzen Sie switch_to_blog($id_of_main_blog) Dateien header.php und footer.php des Themas (und vielleicht einige andere Template-Dateien **) vor hooks / functions, die die Site-Navigation übernehmen und restore_current_blog() danach platzieren.

** Sie müssen die genauen Placements je nach Thema anpassen.

Was ich tun würde, ist ein übergeordnetes Thema, das auf einer Website verwendet wird, und ein untergeordnetes Thema dieses Themas für alle anderen Websites. In der Kopfzeile des übergeordneten Themas a würden Sie einen regulären Aufruf von wp_nav_menu () ausführen, um Ihr Menü zu erstellen, außer dass Sie es nicht wiedergeben würden.

Stattdessen geben Sie das Menü in eine Variable zurück, übergeben Sie diese an update_option und echo es dann. Ersetzen Sie in der header.php Ihres untergeordneten Themas all das durch einen Aufruf von get_option () und geben Sie die Ergebnisse zurück.

Übergeordnetes Thema:

  $args = array('echo' => false); $menu = wp_nav_menu( $args); update_option('network_menu', $menu); echo $menu; 

Kinderthema:

  $menu = get_option('network_menu'); echo $menu; 

Dies hätte zur Folge, dass Sie über eine Site verfügen, auf der Sie das Menü für jede Site im Netzwerk über das Menüsystem steuern.

Am flexibelsten ist es, diese functionalität in ein Plugin zu integrieren. Wenn Sie dies in Ihrem mu-plugins-Ordner ablegen, wird es automatisch auf allen Sites verwendet. Alternativ können Sie das Netzwerk auch aktivieren, um den gleichen Effekt zu erzielen. Der Vorteil dieses Ansatzes besteht darin, dass Sie ihn einfach ein- und ausschalten können. Dadurch wird dieser Aspekt Ihrer Site modular, was beim Testen von Theme hilfreich sein kann.

Aus dem Codex

Wechseln Sie den aktuellen Blog zu einem anderen Blog. switch_to_blog (), ist nützlich, wenn Sie Posts oder andere Informationen aus anderen Blogs abrufen müssen.

Sie können danach mit restore_current_blog () zurückschalten. Beachten Sie, dass diese function nur die letzte Blog-Switching-Aktion umkehrt, normalerweise den letzten Aufruf von switch_to_blog (). Im folgenden Beispiel erfahren Sie, wie Sie vorgehen müssen, wenn mehrere switch_to_blog () s verwendet werden.

Einige Leute sagen, dass switch_to_blog () ist ressourcenintensiv, aber ich hatte keine Probleme damit während meiner Tests.

Andrea R hat ein Plugin geschrieben , das dieses Problem mithilfe von WordPress-Caching anspricht und dann den Cache beim Aktualisieren löscht, aber die folgende Methode ist flexibler.

Ich werde ein grundlegendes Beispiel zeichnen, aus dem Sie bauen können. Es fügt der Kopf- oder Fußzeile nichts hinzu, daher müssen Sie sich mit der Plugin-API in Ihre Themen einklinken.

 < ?php /** * Plugin Name: Header-Footer * Plugin URI: example.com * Description: * Author: * Author URI: */ $main_site = 1; function make_menu() { $args = array( 'authors' => '', 'child_of' => 0, 'date_format' => get_option('date_format'), 'depth' => 1, 'echo' => 0, 'exclude' => '42,311', 'include' => '', 'link_after' => '', 'link_before' => '', 'post_type' => 'page', 'post_status' => 'publish', 'show_date' => '', 'sort_column' => 'menu_order, post_title', 'title_li' => '', 'walker' => '' ); $menu = wp_list_pages( $args ); update_option('network_menu', $menu); echo $menu; } // Test if we're on a sub-site if (!is_main_site()) { //Switch to the main site switch_to_blog( $main_site ); make_menu(); restore_current_blog(); } // Else use normal methods else { make_menu(); } 

Viel Glück!