Home Arrow Icon Knowledge base Arrow Icon WordPress Code Related Arrow Icon How to interact with WordPress Multisite Programmatically
edit

So interagieren Sie programmgesteuert mit WordPress Multisite

WordPress Multisite: Ein umfassender Leitfaden für Entwickler mit Codebeispielen

WordPress Multisite ist eine leistungsstarke Funktion, mit der Sie mehrere Websites mit einer einzigen WordPress-Installation erstellen und verwalten können. Es bietet zahlreiche Vorteile, wie z. B. zentralisierte Verwaltung, gemeinsame Ressourcen und vereinfachte Wartung. In diesem Artikel werden wir das Konzept von WordPress Multisite untersuchen, seine Vorteile diskutieren und Codebeispiele bereitstellen, die Ihnen helfen, sein volles Potenzial auszuschöpfen.

  1. WordPress Multisite einrichten: Um die Multisite-Funktionalität zu aktivieren, müssen Sie einige Änderungen an Ihrer WordPress-Installation vornehmen. Befolgen Sie diese Schritte:

Schritt 1: Sichern Sie Ihre WordPress-Dateien und -Datenbank. Schritt 2: Öffnen Sie die Datei wp-config.php und fügen Sie die folgende Zeile über dem Kommentar „Das ist alles, beenden Sie die Bearbeitung!“ hinzu:

 
define( 'WP_ALLOW_MULTISITE', true );

Schritt 3: Speichern Sie die wp-config.php file und refresh your WordPress admin dashboard. Step 4: Go to "Tools" → "Network Setup" and follow the on-screen instructions.

  1. Konfigurieren der Multisite-Netzwerkeinstellungen: Nachdem Sie WordPress Multisite eingerichtet haben, müssen Sie dessen Netzwerkeinstellungen konfigurieren. Hier sind die Schritte:

Schritt 1: Wählen Sie zwischen Subdomain- oder Unterverzeichnisstruktur:

  • Subdomain-Struktur:
    • Konfigurieren Sie Wildcard-Subdomains (*.yourdomain.com), um auf Ihre WordPress-Installation zu verweisen.
    • Wählen Sie das \ Option „Subdomains“ während der Netzwerkeinrichtung.
  • Unterverzeichnisstruktur:
    • Es ist keine Serverkonfiguration erforderlich.
    • Wählen Sie während der Netzwerkeinrichtung die Option „Unterverzeichnisse“.

Schritt 2: Netzwerkdetails definieren:

  • Geben Sie den Netzwerktitel und die Admin-E-Mail-Adresse ein.
  • Passen Sie bei Bedarf die E-Mail-Adressen des Netzwerkadministrators und des Site-Administrators an.

Schritt 3: Schließen Sie die Installation ab:

  • Klicken Sie auf die Schaltfläche „Installieren“.
  • Folgen Sie Befolgen Sie die bereitgestellten Anweisungen zum Aktualisieren Ihrer Dateien wp-config.php and .htaccess .
  1. Verwalten eines Multisite-Netzwerks: Sobald die Multisite eingerichtet ist, wird die Verwaltung des Netzwerks von entscheidender Bedeutung. So können Sie durch das Multisite-Netzwerk navigieren und wichtige Aufgaben programmgesteuert ausführen:
  • Auf den Netzwerkadministrator zugreifen:
    • Um programmgesteuert auf das Netzwerkadministrator-Dashboard zuzugreifen, können Sie den folgenden Code verwenden:
 
switch_to_networkAktions-Hook. Hier ist ein Beispiel$path das eine Benachrichtigungs-E-Mail an den Site-Administrator sendet: get_main_site_id'Benachrichtigung zur Site-Erstellung''wpmu_new_blog' get_userdata
  • Neue Sites erstellen:
    • Verwenden Sie die Funktion wpmu_create_blog); }) , um neue Sites zu erstellen programmatisch:
 if
wpmu_create_blog; $newdomainLimiting Site-Erstellung für Superadministratoren: Wenn Sie die Website-Erstellung nur auf Super Admins beschränken möchtenHier sind ein paar weitere Codebeispiele: können Sie den Code kopierenCode kopieren ! $title'new-theme'Anpassen der Löschung von Multisite-Sites: Um zusätzliche Aktionen auszuführen'Site gelöscht: ' wenn eine Site in Multisite gelöscht wirdFunktion können Sie den Hook if Einschränken des Zugriffs auf die Multisite-Administration: Wenn Sie den Zugriff auf das Multisite-Verwaltungs-Dashboard nur auf Superadministratoren beschränken möchten) können Sie den Hook get_sites() add_action $meta $ site_id
  • Zu einer Site wechseln:
    • Um programmgesteuert zu einer bestimmten Site innerhalb des Netzwerks zu wechselnaction verwenden. Hier ist ein Beispiel: verwenden Sie den folgenden Code:
 
''Site-ID: ' // Aktuelle Site wiederherstellen'get_sites() Abrufen einer Liste von Sites im Netzwerk: Um eine Liste der Sites im Multisite-Netzwerk abzurufenFunktion zusammen mit der können Sie die Funktion $sites
  • Netzwerk-Plugins und Themes verwalten:
    • Sie können Plugins und Themes für das gesamte Netzwerk programmgesteuert aktivieren oder deaktivieren'Nur Super Admins können neue Websites erstellen$site' indem Sie verwenden activate_pluginrestrict_multisite_admin_access) ()$sites)'foreach Domain: ' deactivate_plugins).) ) und verwenden'

      Pfad: ' Hier ist ein Beispiel: ) verwendenAktions-Hook zusammen mit der Funktion'settings.php'

  1. Multisite-spezaction verwenden. Hier ist ein Beispiel, // Seitentitel d( das Löschen einer Site protokolliert:ische Hooks und Filter: WordPress Multisite bietet zusätzliche Hooks und Filteradd_submenu_page um seine Funktionalität zu erweitern, // Fähigkeit erforderlich Hier sind ein paar Beispiele:
  • wp_initialize_site:

    • Wird ausgelöst, // Menu slug wenn eine neue Site erstellt wird'network_admin_menu'
    • Ermöglicht Ihnen die Durchführung benutzerdefinierter Aktionen während der Site-Initialisierung)
  • Häufige Probleme und Lösungen::

    • Fügt benutzerdefinierte Menüelemente zum Netzwerkadministrator-Dashboard hinzu.
    • Nützlich zur Erweiterung der Funktionalität des Netzwerks.
  • wpmu_new_user:

    • Wird ausgelöst, wenn ein neuer Benutzer zum Netzwerk hinzugefügt wird.
    • Ermöglicht die Anpassung des Benutzerregistrierungsprozesses.

Fazit: WordPress Multisite ist eine leistungsstarke Funktion, die die Verwaltung mehrerer Websites innerhalb einer einzigen WordPress-Installation optimieren kann. Indem Sie die hier beschriebenen Schritte befolgen

Hier sind einige Codebeispiele:

  1. Programmgesteuertes Hinzufügen von Benutzern zu Websites: Um Benutzer zu bestimmten Sites innerhalb des Multisite-Netzwerks hinzuzufügen, können Sie das verwenden,_user_to_blog. Hier ist ein Beispiel: direkt über dem Kommentar „Das ist alles, hören Sie mit der Bearbeitung auf!“ hinzufügen: Funktion. Hier ist ein Beispiel:
 false
Code kopieren = 'WP_DEBUG_DISPLAY ' . action-HookTroubleshooting von Theme-Problemen: Wenn in Ihrem Multisite-Netzwerk Probleme mit Themes auftreten, befolgen Sie diese Schritte zur Fehlerbehebung: um eine Fehlermeldung anzuzeigen, wenn ein in Konflikt stehendes Plugin aktiv ist:, 'username' )->ID// Callback-Funktion zum Rendern der Seite )Lösung: Stellen Sie sicherCode kopieren dass Platzhalter-Subdomains korrekt eingerichtet sindif um auf Ihre WordPress-Installation zu verweisen. Wenden Sie sich bei Bedarf an Ihren Hosting-Anbieter. ) =_id = '=', _user_to_blog. ._id, $user_id, 'subscriber' 'Aktivieren des Debuggens zur Fehlerbehebung: Um das Debuggen in WordPress Multisite zu aktivieren und detailliertere Fehlermeldungen zu erhaltenget_blog_prefix können Sie den folgenden Code zur Datei'
  1. Anpassen der Multisite-Registrierung: Wenn Sie den Benutzerregistrierungsprozess für Multisite anpassen möchten, können Sie den wpmu_validate_user_signup Filter verwenden. Hier ist ein Beispiel, das nach einem benutzerdefinierten Registrierungsfeld mit dem Namen „Unternehmen“ sucht:
 =
Deaktivieren Sie alle Plugins im Netzwerk und prüfen Sie, ob das Problem weiterhin besteht. Wenn nicht, aktivieren Sie jedes Plugin nacheinander erneut, um das in Konflikt stehende Plugin zu identDatenbanktabellen prüfen: Wenn Sie Probleme mit den Multisite-Datenbanktabellen vermuten, können Sieizieren. custom_validate_user_signup. Programmgesteuertes Erstellen einer neuen Site und Zuweisen eines Themas: Um programmgesteuert eine neue Site in Multisite zu erstellen und ihr ein bestimmtes Thema zuzuweisen, können Sie das '$results' , get_results Code kopieren isset zusammen mit einer Schleife verwenden, um die Site-Informationen abzurufen und auszugeben. Hier ist ein Beispiel: Code kopieren 'Unternehmen'] $wpdb $user_id, // Menütitel $_POST6Funktion, =Code kopieren,$user_idadd; ,, __, ,, ) $site_id ) ;, == Fehlerbehebung bei Plugin-Konflikten: Wenn Sie Probleme mit Plugins in Ihrem Multisite-Netzwerk haben, befolgen Sie diese Schritte zur Fehlerbehebung:, = Verwenden Sie den Aktions-Hook
  1. , um eine Fehlermeldung anzuzeigen, wenn ein bestimmtes Thema Probleme verursacht: wpmu_new_blog function
 
function send_site_creation_notification) $blog_id, $user_id, $domain, $path, =_id, $meta ) -> ,_url = {verwendenget_blog_prefix ) $blog_id check_for_theme_issues $admin_email = Filter verwenden. Hier ist ein Beispiel:$table_prefix $user_id )->user_email; ) = { , // Slug des übergeordneten Menüs _url."; wp_mail( $admin_email, [, $message add ( ,, 'send_site_creation_notification', 10, 6 "SELECT * FROM
  1. $result ); Programmgesteuertes Wechseln von Themes für eine Site: Um Themes programmgesteuert für eine bestimmte Site innerhalb des Multisite-Netzwerks zu wechseln, können Sie die Funktion
 
function limit_site_creation_to_super_admins( $result ) { if is_super_adminFunktion $result['errors']->add( 'super_admin_only', __( Code kopieren, , ( return $result} add_filter( 'wpmu_validate_blog_signup', 'limit_site_creation_to_super_admins' );

=

  1. get_main_site_id wp_delete_site switch_to_blog
 
function log_site_deletion( $blog_id ) { error_log( admin_init . $blog_id ); } (( 'wp_delete_site', 'log_site_deletion' );
  1. ; switch_theme() (
 
,_id = get_main_site_id; switch_to_blog( '

Benutzerdefinierte Menüseite

'_id
); switch_theme( Code kopieren ); ( Anzeigen einer Liste von Sites in einem Multisite-Netzwerk auf einer Seite: Um eine Liste der Sites im Multisite-Netzwerk auf einer Seite anzuzeigen, können Sie die Funktion
  1. $site admin_init (
 
function restrict_multisite_admin_access() { if ( ! current_user_can( $site - >domain . (( $site // Weisen Sie das Thema zu ,( __( verwenden(, 'text-domain' Funktion. Hier ist ein Beispiel: // Durch die gewünschte Site-ID ersetzen( ., $site );
  1. ); = (
 
; = get_sites Code kopieren ( custom_network_menu_item as $site 'admin @example.com' add_action '

Site-URL: ' . $site->blog_id . // Erstellen Sie die neue Site . $siteVerwenden Sie den ', Path: ' . $site->path . '<br>'; }

,

  1. get_user_by wpmu_create_blog() 'login' switch_theme() );
 
$new_site_domain = 'newsite.example.com'; $new_site_path = '/'; $new_site_title = restore_current_blog; $new_site_admin = 'admin'; Code kopieren = =; $theme_to_assign = 'twentytwenty'; as $new_site_id = wpmu_create_blog( $new_site_domain, $new_site_path, $new_site_title, get_user_by( 'login', $new_site_admin ; So interagieren Sie programmgesteuert mit WordPress Multisite switch_to_blog( $new_site_id ); ); switch_theme( $theme_to_assign ); get_site_url restore_current_blog();
  1. ; // Fügen Sie hier Ihren benutzerdefinierten Seiteninhalt hinzu ; }
 
$sites = get_sites(); foreach ( $sites as $site { echo '<h2>Site: ' . $site->blog_id . '</h2>'; echo '<p>Domain: ' . $site->domain . '</p>'; echo ( . $site->path . '</p>'; echo ( . get_site_url( $site->blog_id ) . '</p>'; }
  1. Fehlerbehebung bei WordPress Multisite: network_admin_menu Problem: Fehler "ERR_TOO_MANY_REDIRECTS" beim Zugriff auf eine Site im Netzwerk. Lösung: Überprüfen Die URL-Einstellungen der Site im Netzwerkadministrator-Dashboard. Stellen Sie sicher, dass sie korrekt mit der gewählten Unterdomänen- oder Unterverzeichnisstruktur konfiguriert sind. Problem: Fehlende oder falsche Rewrite-Regeln.
 
function custom_network_menu_item() { Code kopieren( (); 'Custom Menu'Wechseln Sie vorübergehend zu einem Standard-Theme (z. B. Twenty Twenty-One), um zu prüfen, ob das Problem mit dem aktuellen Theme zusammenhängt. 'Custom Menu'= 'manage_network' ,Funktion 'custom_menu_page_callback' ( add_action( ,, ); ); function custom_menu_page_callback() { echo Funktion; ( }

{

  1. if
  • (

    • Funktion, um das Tabellenpräfix für eine bestimmte Site abzurufen und dann die entsprechenden Tabellen zu überprüfen.
  • (

    • Solution: Regenerate the Rewrite Rules by visiting the "Settings" → "Permalinks" page in the network admin dashboard and clicking the "Save Changes" button.
  • $site_id

    • echo
  1. '

    Konfliktierendes Plugin ist aktiv. Bitte deaktivieren Sie es.

    ' wp-config.php add_action
 
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( {, ( );
  1. $posts_table
  • 'your -theme-folder/your-theme-style.css'
  • ); network_admin_notices '

    Theme verursacht Probleme. Bitte wechseln Sie zu einem anderen Thema.

    '
 
function check_for_plugin_conflicts() { if ( is_plugin_active( Code kopieren ) ) { echo '<div class="error"><p>Conflicting Plugin is active. Please deactivate it.</p></div>'wordpress multisite, Multisite-Codebeispiele, wp multisite, WordPress-Multisite-Fehlerbehebung, Multisite-Netzwerk, Multisite-Theme, Multisite-Theme WordPress add_action( 'network_admin_notices', 'check_for_plugin_conflicts' );
  1. );
  • // Beispiel: Überprüfen Sie die Posts-Tabelle auf Site-ID 2
  • $posts_table network_admin_notices $table_prefix
 
function check_for_theme_issues() { if ( get_stylesheet() === " ) { echo '<div class="error"><p>Theme is causing issues. Please switch to a different theme.</p></div>'; } } add_action( 'network_admin_notices', 'check_for_theme_issues' );
  1. Inspecting Database Tables: If you suspect issues with the Multisite database tables, you can use the get_blog_prefix() function to retrieve the table prefix for a specific site and then inspect the corresponding tables.
 
$site_id = 2; // Replace with the desired site ID $table_prefix = get_blog_prefix( $site_id ); // Example: Inspect the posts table for site ID 2 $posts_table = $table_prefix . 'posts'; $results = $wpdb->get_results( "SELECT * FROM $posts_table" );