it-swarm.com.de

Wordpress Multisite: Alle Unterblogs haben die gleiche Kopf- und Fußzeile des Hauptblogs

Ich versuche Folgendes zu tun:

Ich habe einen Main-Blog und Dutzende von Subblogs. Ich möchte, dass alle Unterblogs dasselbe Thema verwenden (oder untergeordnetes Thema, noch nicht sicher), aber auf allen Unterblogs dieselben Navigationselemente des Hauptblogs haben? Gleiches gilt für die Fußzeile.

Wie habe ich das gemacht?

Dies ist mein Haupt-Blog und meine Landing-Page

enter image description here

Wenn ich auf Subblogs klicke und ein Subblog auswähle, soll nur der Inhaltsbereich betroffen sein, die Kopf- und Fußzeile sollten im gesamten Netzwerk gleich bleiben.

enter image description here

Innerhalb des Inhaltsbereichs eines Subblogs möchte ich dann die Seiten und Beiträge des Subblogs verwenden.

Was ist der richtige Weg, um dies zu tun?


Aktualisieren:

<ul role="navigation">
    <?php

        //wp_list_pages('title_li=&depth=1&exclude=42,311');

        $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;
    ?>
</ul>

in meinem Kinderthema mache ich:

<ul role="navigation">
    <?php 
        $menu = get_option('network_menu');
            echo $menu;
    ?>
</ul>
2
mathiregister

Sie können die Funktion switch_to_blog() verwenden

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

Sie können also Ihr Thema so bearbeiten, dass immer einige Kopf- und Fußzeileninhalte aus dem Hauptblog abgerufen werden, der innere Inhalt der Unterblogs jedoch beibehalten wird.

Fügen Sie in die Header.php- und Footer.php-Dateien des Themas (und möglicherweise in einige andere Vorlagendateien **) switch_to_blog($id_of_main_blog) vor Hooks/Funktionen ein, die die Seitennavigation übernehmen und restore_current_blog() nachher platzieren.

** Sie müssen die genauen Platzierungen je nach Thema optimieren.

0
Douglas.Sesar

Ich würde ein übergeordnetes Thema erstellen, das auf einer Site verwendet wird, und ein untergeordnetes Thema dieses Themas für alle anderen Sites. In der Kopfzeile des übergeordneten Themas würden Sie einen regulären Aufruf von wp_nav_menu () ausführen, um Ihr Menü zu erstellen, es sei denn, Sie würden es nicht wiederholen.

Geben Sie das Menü stattdessen in eine Variable zurück, übergeben Sie es an update_option und geben Sie es als Echo aus. Ersetzen Sie in der Datei header.php Ihres Kinderthemas all das durch einen Aufruf von get_option () und geben Sie die Ergebnisse aus.

Ü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 einen Standort haben, an dem Sie das Menüsystem zur Steuerung des Menüs für jeden Standort im Netzwerk verwendet haben.

2
JPollock

Der flexibelste Ansatz besteht darin, diese Funktionalität in ein Plugin zu packen. Wenn Sie dies in Ihrem mu-plugins-Ordner ablegen, wird es automatisch auf allen Websites verwendet. Alternativ können Sie es auch über ein Netzwerk aktivieren, um den gleichen Effekt zu erzielen. Der Vorteil dieses Ansatzes besteht darin, dass Sie ihn einfach ein- oder ausschalten können. Dadurch wird dieser Aspekt Ihrer Site modular, was beim Testen von Themen hilfreich sein kann.

Aus dem Codex

Wechseln Sie das aktuelle Blog zu einem anderen Blog. switch_to_blog () ist nützlich, wenn Sie Beiträge oder andere Informationen aus anderen Blogs abrufen müssen.

Sie können anschließend mit restore_current_blog () zurückschalten. Beachten Sie, dass diese Funktion nur den letzten Blogwechsel rückgängig macht, normalerweise den letzten Aufruf von switch_to_blog (). Im folgenden Beispiel wird beschrieben, wie Sie vorgehen, wenn mehrere switch_to_blog () verwendet werden.

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

Andrea R hat ein Plugin geschrieben, das dieses Problem durch Verwendung von WordPress-Caching behebt und dann den Cache beim Update leert. Die folgende Methode ist jedoch flexibler.

Ich werde ein grundlegendes Beispiel zeichnen, aus dem Sie aufbauen können. Es fügt der Kopf- oder Fußzeile eigentlich nichts hinzu, sodass Sie sich mit der Plug-in-API in Ihre Designs einbinden müssen.

<?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!

0
jeanpier_re