WordPress Multisite – Funktion zu functions.php hinzufügen, um nur 1 Site zu beeinflussen

Lesezeit: 4 Minuten

Ich betreibe eine WordPress-Multisite mit 2 Blogs (site1.com und site2.com)

Die gesamte Seite teilt das gleiche Thema sowie die Datei functions.php.

Ich habe den folgenden Filter, den ich in die Datei function.php einfügen muss, aber ich brauche diesen Filter, um nur 1 Blog zu beeinflussen – site2.com

Der Filter ist wie folgt:

add_filter( 'get_manager_nav', 'set_manager_nav' );

function set_manager_nav( $urls ) {
    unset($urls['voucher']);
    return $urls;
} 

Gibt es eine Möglichkeit, diesen Filter nur auf 1 Website anzuwenden?

Was ich stattdessen getan habe, ist, dass ich ein neues Plugin erstellt habe, ich habe die Funktion zum Plugin hinzugefügt und das Plugin nur auf site2.com aktiviert.

Es funktioniert großartig, aber ich nehme an, die Verwendung eines einfachen Snippets ist viel besser als die Verwendung eines Plugins. Gibt es also eine Möglichkeit, dies mit einem Snippet zu tun?

  • Du könntest das überprüfen blog_id

    – pbaldauf

    22. Februar 2015 um 10:49 Uhr

Meiner Meinung nach ist der beste Weg, eine Subsite innerhalb einer Multisite anzusprechen, die Verwendung von get_current_blog_id() Funktion innerhalb der vom Filter aufgerufenen Funktion. Hier ist ein Beispiel für einen Code, der funktionieren würde:

<?php
function function_to_call(){

    if( get_current_blog_id() === 1 ){
        // Return something if the site ID matches the number one...
    }

    // Return something if the site ID does not match the number 1
}
add_filter( 'filter_name', 'function_to_call' );
?>

Sie können die ID der Website abrufen, auf die Sie abzielen möchten, indem Sie zu gehen https://example.org/wp-admin/network/sites.php wo https://beispiel.org wird durch Ihre Domain ersetzt.

Dieser Ansatz hat einige Vorteile gegenüber anderen hier aufgeführten.

  1. Dies funktioniert, wenn Sie mehrere Versionen Ihrer Multisite-Installation haben, die unterschiedliche Domänen verwenden. Zum Beispiel haben Sie vielleicht http://localhost/site1, site1.beispiel.org und site1.staging.beispiel.org. Wenn Sie nach der Domain suchen, würde der Filter auf jeder Site außer der Produktion brechen. Wenn Sie die ID verwenden, sollte es auf der ganzen Linie funktionieren.
  2. Andere Optionen wie das Erstellen eines untergeordneten Themas oder eines Plugins funktionieren, aber sie sind in der Regel übertrieben, wenn es darum geht, eine Funktion auf einem einzigen Hook auszuführen.

Das ist etwas knifflig. Möglicherweise müssen Sie den Site-Namen oder die ID überprüfen, bevor Sie den Filter hinzufügen.

Ihre Funktion bleibt wie sie ist, aber der Filterteil wird zu:

$current_site = get_current_site();
if($current_site->domain == 'site2.com')
   add_filter( 'get_manager_nav', 'set_manager_nav' );

Sie können mehr über get_current_site() lesen. hier.

Ich weiß, dass dies schon eine Weile her ist, aber ich habe gerade versucht, auch nur einer Multisite eine Funktion hinzuzufügen. Die Methode ist zunächst etwas verwirrend, da Sie vom Multisite-Administrator zum Hauptnetzwerkadministrator springen müssen. Der Weg, dies zu tun, besteht darin, ein untergeordnetes Thema über den Hauptnetzwerkadministrator zu erstellen (es wird ein Plugin zum Erstellen von untergeordneten Themen verwendet. Es gibt einige). Während Sie sich noch in der Netzwerkverwaltung befinden, wählen Sie die Hauptüberschrift „Designs“ und dann „Editor“, um das aktuelle Design anzuzeigen, dann „wählen Sie das zu bearbeitende Design“ oben rechts aus und wählen Sie das untergeordnete Design aus der Dropdown-Liste aus. Fügen Sie den neuen Code zur functions.php hinzu. Wenn Sie alles, was Sie brauchen, hinzugefügt haben, wechseln Sie zurück zum Dashboard für die Multisite, für die Sie die Funktion benötigt haben, und aktivieren Sie das untergeordnete Thema. Wenn Sie eine andere Funktion für eine andere Multisite benötigen, gehen Sie zurück zum Netzwerkadministrator und erstellen Sie ein weiteres untergeordnetes Thema (ich habe derzeit Twentyseventeen als Hauptthema, dann Kind1 für Multisite 1 und Kind2 für Multisite 2. Es ist ein wenig kompliziert, aber sobald Sie verstehen, dass diese Änderungen müssen vom Netzwerkadministrator vorgenommen werden, es ist ziemlich einfach. Ich hoffe, das hilft.

  • Sie möchten Ihre Antwort neu formatieren. Sie möchten, dass andere dies lesen und verstehen; dann Formsache. Hinweis: vertikale Abstände (auch bekannt als Absätze) würden helfen 😉

    – Geisterkatze

    8. Mai 2017 um 15:38 Uhr

Haben Sie diese Arbeit nur vor Ort gemacht? Weil ich ein ähnliches Problem habe, eine andere Funktion – aber nach dem Trigger – funktioniert es auf der Zielwebsite, aber auf anderen Websites werden Inhalte überhaupt nicht wiedergegeben.

Mein Code:

add_filter('the_content', 'wpse_ad_content');

function wpse_ad_content($content)
{
    if ( 2 !== get_current_blog_id() )
        return;
    
    if (!is_single()) return $content;
    $paragraphAfter = 2; //Enter number of paragraphs to display ad after.
    $content = explode("</p>", $content);
    $new_content="";
    for ($i = 0; $i < count($content); $i++) {
        if ($i == $paragraphAfter) {
            $new_content.= '<div style="width: 300px; height: 250px; padding: 6px 6px 6px 0; float: left; margin-left: 0; margin-right: 18px;">';
            $new_content.= 'Enter your ad code here....';
            $new_content.= '</div>';
        }

        $new_content.= $content[$i] . "</p>";
    }

    return $new_content;
}

1434890cookie-checkWordPress Multisite – Funktion zu functions.php hinzufügen, um nur 1 Site zu beeinflussen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy