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

Programmatisch communiceren met WordPress Multisite

WordPress Multisite: een uitgebreide handleiding voor ontwikkelaars met codevoorbeelden

WordPress Multisite is een krachtige functie waarmee u meerdere websites kunt maken en beheren met één enkele WordPress-installatie. Het biedt tal van voordelen, zoals gecentraliseerd beheer, gedeelde bronnen en vereenvoudigd onderhoud. In dit artikel onderzoeken we het concept van WordPress Multisite, bespreken we de voordelen ervan en geven we codevoorbeelden om je te helpen het volledige potentieel ervan te benutten.

  1. WordPress Multisite instellen: Om Multisite-functionaliteit in te schakelen, moet u een paar wijzigingen aanbrengen in uw WordPress-installatie. Volg deze stappen:

Stap 1: Maak een back-up van uw WordPress-bestanden en database. Stap 2: Open het wp-config.php|@ op |file en vernieuw uw WordPress-beheerdersdashboard. Stap 4: Ga naar "Extra" â "Netwerkinstellingen" en volg de instructies op het scherm. bestand en voeg de volgende regel toe boven de opmerking "Dat is alles, stop met bewerken!":

 
define( 'WP_ALLOW_MULTISITE', true );

Stap 3: Sla de wp-config.php file en refresh your WordPress admin dashboard. Step 4: Go to "Tools" → "Network Setup" and follow the on-screen instructions.

  1. Multisite-netwerkinstellingen configureren: Nadat u WordPress Multisite hebt ingesteld, moet u de netwerkinstellingen configureren. Hier zijn de stappen:

Stap 1: Kies tussen subdomein- of submapstructuur:

  • Subdomeinstructuur:
    • Configureer subdomeinen met jokertekens (*.uwdomein.com) zodat deze naar uw WordPress-installatie verwijzen.
    • Selecteer de \ "Subdomeinen" optie tijdens netwerkconfiguratie.
  • Subdirectorystructuur:
    • Er is geen serverconfiguratie vereist.
    • Selecteer de "Subdirectories" optie tijdens netwerkconfiguratie.

Stap 2: Definieer netwerkdetails:

  • Voer de netwerktitel en het e-mailadres van de beheerder in.
  • Pas indien nodig de e-mailadressen van de netwerkbeheerder en de sitebeheerder aan.

Stap 3: Voltooi de installatie:

  • Klik op de knop "Installeren".
  • Volgen de meegeleverde instructies om uw wp-config.php and .htaccess files bij te werken.
  1. Multisite netwerk beheren: Zodra de Multisite is opgezet, wordt het beheer van het netwerk cruciaal. Zo kunt u door het Multisite-netwerk navigeren en essentiële taken programmatisch uitvoeren:
  • Toegang krijgen tot netwerkbeheerder:
    • Om programmatisch toegang te krijgen tot het netwerkbeheerdersdashboard, kunt u de volgende code gebruiken:
 
switch_to_networkactiehaak. Hier is een voorbeeld waarbij een e-mailmelding naar de sitebeheerder wordt verzonden: get_main_site_id'Melding voor het maken van een site'__ gebruiken. Hier is een voorbeeld:
  • Nieuwe sites maken:
    • Gebruik de wpmu_create_blog)if }) functie om nieuwe sites te maken programmatisch:
 
wpmu_create_blog; $nieuwdomein$bericht $padHier zijn nog een paar codevoorbeelden: $titelBeperken Site maken voor superbeheerders: Als u het maken van sites alleen wilt beperken tot superbeheerders'fouten' kunt u het filter Kopieer code ! $meta'nieuw-thema'Het verwijderen van meerdere sites aanpassen: Om aanvullende acties uit te voeren wanneer een site in Multisite wordt verwijderd'Site verwijderd: ' kunt u de $site Toegang tot beheer op meerdere locaties beperken: Als u de toegang tot het Multisite-beheerdashboard wilt beperken tot alleen Super Admins'Site-ID: ' kunt u de get_sites ) $ site_id retour
  • Overschakelen naar een site:
    • Om programmatisch over te schakelen naar een specaction hook gebruikenaction hook gebruiken. Hier is een voorbeeld: Hier is een voorbeeld waarin de verwijdering van een site wordt geregistreerd:ieke site binnen het netwerk gebruikt u de volgende code:
 )$theme_to_assign
') $sites'foreach Een lijst met sites in het netwerk ophalen: Om een ​​lijst met sites in het Multisite-netwerk op te halenfunctie samen met de kunt u de functie {
  • Netwerkplug-ins en thema's beheren:
    • U kunt plug-ins en thema's voor het hele netwerk programmatisch in- of uitschakelen met behulp van de activatie_pluginrestrict_multisite_admin_access () )'Alleen superbeheerders kunnen nieuwe sites maken)' deactivate_pluginshuidige_gebruiker_kan)'tekstdomein' and gebruiken$nieuwe_site_domein Hier is een voorbeeld:)functie'settings, // Mogelijkheid vereistphp' Hier is een voorbeeld:) functies'netwerk_admin_menu'
  1. Multisite-specifieke hooks en filters: WordPress Multisite biedt extra hooks en filters om de )action hook samen met dealiteit uit te breiden) Hier zijn een paar voorbeelden:
  • wp_initialize_site:

    • Wordt geactiveerd wanneer een nieuwe site wordt gemaakt.
    • Hiermee kunt u aangepechote acties uitvoeren tijdens de initialisatie van de site.
  • Veelvoorkomende problemen en oplossingen::

    • Voegt aangepaste menu-items toe aan het netwerkbeheerdersdashboard.
    • Handig voor het uitbreiden van de netwerkadd_submenu_pagefunctie)aliteit.
  • wpmu_new_user:

    • Wordt geactiveerd wanneer een nieuwe gebruiker aan het netwerk wordt toegevoegd.
    • Maakt aanpassing van het gebruikersregistratieproces mogelijk.

Conclusie: WordPress Multisite is een krachtige functie die het beheer van meerdere websites binnen één WordPress-installatie kan stroomlijnen. Door de stappen te volgen die hierin worden beschreven

Hier zijn enkele codevoorbeelden:

  1. Programmatisch gebruikers toevoegen aan sites: Om gebruikers toe te voegen aan specifieke sites binnen het Multisite-netwerk kunt u de =_user_to_blog'Aangepast menu'bestand net boven de opmerking "Dat is allesfalse stop met bewerken!": functie. Hier is een voorbeeld:
 // Callback-functie om de pagina weer te geven action hook om een ​​foutmelding weer te geven als een conflicterende plug-in actief is:Oplossing: Zorg ervoor dat subdomeinen met jokertekens correct zijn ingesteld zodat ze naar uw WordPress-installatie verwijzen. Neem indien nodig contact op met uw hostingprovider voor hulp. )
Kopieer code = '

Domein: ' . Problemen met themaproblemen oplossen: Als u problemen ondervindt met thema's in uw Multisite-netwerkKopieer code volgt u deze stappen om het probleem op te lossen: // Hoofdmenuslug 'custom- menu' 'gebruikersnaam' )->ID= ._id = '='Databasetabellen inspecteren: Als u problemen vermoedt met de Multisite-databasetabellenget_blog_prefix kunt u de // Paginatitel _user_to_blog. =_idCode kopiëren $user_id->domein . 'abonnee' ->pad .

  1. Multisite-registratie aanpassen: Als u het gebruikersregistratieproces voor Multisite wilt aanpassen, kunt u het filter wpmu_validate_user_signup gebruiken. Hier is een voorbeeld waarin wordt gecontroleerd op een aangepast registratieveld met de naam "bedrijf":
 
; custom_validate_user_signup$nieuwe_site_titel Programmatisch een nieuwe site maken en een thema toewijzen: Om programmatisch een nieuwe site in Multisite te maken en er een specget_resultsiek thema aan toe te wijzen, kunt u de '$results' , if Kopieer code issetgebruiken in combinatie met een lus om de site-informatie op te halen en uit te voeren. Hier is een voorbeeld: Kopieer code 'bedrijf'] $wpdb $user_id. $_POST6functie, // Menutitel =;,$user_idadddefiniëren ,, __'WP_DEBUG_DISPLAY ' ,, ) $site_id ) ;, == ., = Problemen met plug-ins oplossen: Als u problemen ondervindt met plug-ins in uw Multisite-netwerk, volgt u deze stappen om het probleem op te lossen:
  1. action hook om een ​​foutmelding weer te geven als een specifiek thema problemen veroorzaakt: wpmu_new_blog functie
 
function send_site_creation_notification) , $user_id, $domain, $path, ,_id, $meta ) -> ,_url = {, $blog_id Gebruik de $admin_email = get_userdataget_blog_prefix ) $user_id )->user_email; Kopieer code = { '

Aangepaste menupagina

'_url
."
; wp_mail$table_prefix $admin_email, [, ) add (( 'wpmu_new_blog', 'send_site_creation_notification', 10, 6 check_for_theme_issues
  1. $resultaat "SELECT * FROM Programmatisch van thema wisselen voor een site: Om programmatisch van thema te wisselen voor een specifieke site binnen het Multisite-netwerk, kunt u de functie
 
function limit_site_creation_to_super_admins( $result ) { if is_super_adminfunctie $result[$blog_id]->add( 'super_admin_only', __( Code kopiëren, ( ( , $result} add_filter( 'wpmu_validate_blog_signup', 'limit_site_creation_to_super_admins' );

=

  1. get_main_site_id wp_delete_site '

    Pad: '

 
function log_site_deletion( $blog_id ) { error_log( admin_init . $blog_id ); } // Vervang door de gewenste site-ID( 'wp_delete_site', 'log_site_deletion' );
  1. ; , (
 
$site_id = get_main_site_id; switch_to_blog( $site_id ); switch_theme( Kopieer code ); ( Een lijst met sites in een netwerk met meerdere sites op een pagina weergeven: Om een ​​lijst met sites in het Multisite-netwerk op een pagina weer te geven, kunt u de functie
  1. $site admin_init (
 
function restrict_multisite_admin_access() { if ( ! ', Domein: '( $site - >domein . ', Pad: '( $site ->pad . ,( __( (, switch_theme() functie. Hier is een voorbeeld: add_action( switch_to_blog, $site );
  1. // Wijs het thema toe = (
 
; = get_sites Kopieer code ( Debugging inschakelen voor probleemoplossing: Om foutopsporing in WordPress Multisite in te schakelen en meer gedetailleerde foutmeldingen te krijgen, kun je de volgende code toevoegen aan het as $site 'admin @example.com' add_action (); . $site->blog_id . // Maak de nieuwe site . $siteGebruik de ( . $site$nieuwe_site_pad '<br>'; }

,

  1. get_user_by wpmu_create_blog() 'login' switch_theme() );
 
. = 'newsite.example.com'; 'Aangepast menu' = '/'; ; = restore_current_blog; $new_site_admin = 'admin'; Code kopiëren = =; '

Site-URL: ' = 'twentytwenty'; as $new_site_id = wpmu_create_blog( $new_site_domain, $new_site_path, $new_site_title, get_user_by( 'login', $new_site_admin ; Code kopiëren switch_to_blog( $new_site_id ); ); switch_theme( $theme_to_assign ); get_site_url restore_current_blog();

  1. ; // Voeg hier uw aangepaste pagina-inhoud toe ; }
 
$sites = get_sites(); foreach ( $sites as $site ); Hoe u programmatisch kunt communiceren met WordPress Multisite '<h2>Site: ' . $site->blog_id . '</h2>'; echo ( . $sitewaar '</p>'; echo ( . $site); '</p>'; echo ( . get_site_url( $site->blog_id ) . '</p>'; }
  1. Problemen met WordPress Multisite oplossen: network_admin_menu Probleem: "ERR_TOO_MANY_REDIRECTS" fout bij toegang tot een site in het netwerk. Oplossing: controleren de URL-instellingen van de site in het netwerkbeheerdersdashboard. Zorg ervoor dat ze correct zijn geconfigureerd met de gekozen subdomein- of submapstructuur. Probleem: ontbrekende of onjuiste herschrijfregels.
 
function custom_network_menu_item() { add_submenu_page( (); ,waar );definieer 'manage_network' ,, // Menu slug 'custom_menu_page_callback' definieer add_action( ,, 'custom_network_menu_item' ); function custom_menu_page_callback() { echo functie; ( }

{

  1. if
  • (

    • functie om het tabelvoorvoegsel voor een specifieke site op te halen en vervolgens de bijbehorende tabellen te inspecteren.
  • (

    • 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. '

    Conflicterende plug-in is actief. Deactiveer het alstublieft.

    ' wp-config.php add_action
 
,( 'WP_DEBUG', Schakel tijdelijk over naar een standaardthema (bijvoorbeeld Twenty Twenty-One) om te controleren of het probleem verband houdt met het huidige thema. ); network_admin_notices( 'WP_DEBUG_LOG', functie ); (( {, ( );
  1. $posts_table
  • 'uw -theme-folder/uw-thema-stijl.css'
  • ) { network_admin_notices '

    Het thema veroorzaakt problemen. Schakel over naar een ander thema.

    '
 
function check_for_plugin_conflicts() { if ( is_plugin_active( Kopieer code ) ) { echo '<div class="error"><p>Conflicting Plugin is active. Please deactivate it.</p></div>'wordpress multisite, multisite codevoorbeelden, wp multisite, probleemoplossing voor WordPress multisite, multisite netwerk, multisite thema, multisite thema wordpress add_action( 'network_admin_notices', 'check_for_plugin_conflicts' );
  1. );
  • // Voorbeeld: Inspecteer de berichtentabel op 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" );