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

Sådan interagerer du med WordPress Multisite Programmatically

WordPress Multisite: En omfattende vejledning for udviklere med kodeeksempler

WordPress Multisite er en kraftfuld funktion, der giver dig mulighed for at oprette og administrere flere websteder ved hjælp af en enkelt WordPress-installation. Det giver adskillige fordele, såsom centraliseret styring, delte ressourcer og forenklet vedligeholdelse. I denne artikel vil vi udforske konceptet WordPress Multisite, diskutere dets fordele og give kodeeksempler for at hjælpe dig med at udnytte dets fulde potentiale.

  1. Opsætning af WordPress Multisite: For at aktivere Multisite-funktionalitet skal du foretage et par ændringer af din WordPress-installation. Følg disse trin:

Trin 1: Sikkerhedskopier dine WordPress-filer og database. Trin 2: Åbn wp-config.php filen og tilføj følgende linje over "Det er alt, stop med at redigere!"-kommentaren:

 
define( 'WP_ALLOW_MULTISITE', true );

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

  1. Konfiguration af multisite netværksindstillinger: Efter opsætning af WordPress Multisite skal du konfigurere netværksindstillingerne. Her er trinene:

Trin 1: Vælg mellem underdomæne eller undermappestruktur:

  • Underdomænestruktur:
    • Konfigurer jokertegn underdomæner (*.ditdomæne.com) til at pege på din WordPress-installation.
    • Vælg \ "Underdomæner" valgmulighed under netværksopsætning.
  • Undermappestruktur:
    • Ingen serverkonfiguration er påkrævet.
    • Vælg muligheden "Undermapper" under netværksopsætning.

Trin 2: Definer netværksdetaljer:

  • Indtast netværkstitlen og administratorens e-mail.
  • Tilpas netværksadministratorens og webstedsadministratorens e-mail-adresser, hvis det er nødvendigt.

Trin 3: Fuldfør installationen:

  • Klik på knappen "Install".
  • Følg de medfølgende instruktioner til at opdatere dine wp-config.php and .htaccess filer.
  1. Administration af multisite-netværk: Når Multisite er sat op, bliver styring af netværket afgørende. Sådan kan du navigere gennem multisite-netværket og udføre vigtige opgaver programmatisk:
  • Adgang til netværksadministrator:
    • For at få adgang til netværksadministratorens dashboard programmatisk kan du bruge følgende kode:
 
switch_to_networkaction hook. Her er et eksempel$meddelelse der sender en notifikations-e-mail til webstedsadministratoren: get_main_site_id$domæne'wpmu_new_blog' . Her er et eksempel:
  • Oprettelse af nye websteder:
    • Brug wpmu_create_blog)if }) funktionen til at oprette nye websteder programmatisk:
 
wpmu_create_blog; $newdomainHer er et par flere kodeeksempler: $pathBegrænset Oprettelse af websted til superadministratorer: Hvis du vil begrænse oprettelsen af ​​websteder til kun at være superadministratorer'fejl' kan du bruge filteret $titleer_super_admin ! 'kun super_admin'Tilpasning af multisite-sletning: For at udføre yderligere handlinger'Site slettet: ' når et websted slettes i Multisitefunktion kan du bruge $site Begrænsning af adgang til multisite administration: Hvis du vil begrænse adgangen til Multisite-administrationsdashboardet til kun Super Admins'Site-id: ' kan du bruge get_sites ) $meta'Meddelelse om oprettelse af websted' $ site_id retur
  • Skhandlingskrogenhandlingskrogen. Her er et eksempel: Her er et eksempel der logger sletningen af ​​et websted:t til et websted:
    • For programmæssigt at skifte til et specifikt websted på netværket skal du bruge følgende kode:
 )$theme_to_assign
') $sites'gendan_aktuel_blog Hentning af en liste over websteder i netværket: For at hente en liste over websteder i Multisite-netværket kan du bruge Kopiér kode
  • Administration af netværksplugins og temaer:
    • Du kan programmæssigt aktivere eller deaktivere plugins og temaer for hele netværket ved hjælp af activate_pluginrestrict_multisite_admin_access '

      Websted: ') )) deactivate_plugins'nyt-tema')'Kun superadministratorer kan oprette nye websteder'

      Sti: '' og funktionen'settings, // Kræver kapacitetphp' Her er et eksempel:'funktionen sammen med Domæne: ') funktioner'Almindelige problemer og løsninger:'

  1. Multisite-specifikke kroge og filtre: WordPress Multisite giver yderligere kroge og filtre for at udvide dets funktionalitet) Her er et par eksempler:
  • wp_initialize_site:

    • Tænder'tekst-domæne' når et nyt websted oprettes.
    • Giver dig mulighed for at udføre tilpechosede handlinger under initialisering af webstedet.
  • network_admin_menu:

    • Føjer brugerdefinerede menupunkter til netværksadmin-dashboardet.
    • Nyttig til at udvide netværkets funktionalitet.
  • wpmu_new_user:

    • Udløseradd_submenu_pagefunktion) når en ny bruger tilføjes til netværket.
    • Muliggør tilpasning af brugerregistreringsprocessen.

Konklusion: WordPress Multisite er en kraftfuld funktion, // Overordnet menu slug der kan strømline administrationen af ​​flere websteder inden for en enkelt WordPress-installation. Ved at følge trinene beskrevet i dette

Her er nogle kodeeksempler:

  1. Programmatisk tilføjelse af brugere til websteder: For at tilføje brugere til bestemte websteder i Multisite-netværket kan du bruge false // Sidetitel_user_to_blogfilen lige over "Det er alt, stop med at redigere!"-kommentaren:funktionen. Her er et eksempel:handlingshook for at vise en fejlmeddelelse, hvis et modstridende plugin er aktivt: funktion. Her er et eksempel:
 action hook sammen med
Kopiér kode = '

Domæne: ' 'BrugerFejlfinding af temaproblemer: Hvis du støder på problemer med temaer i dit Multisite-netværkKopiér kode skal du følge disse trin for at fejlfinde:ret menu' 'custom- menu'Kopiér kode 'brugernavn' )->ID// Tilbagekaldsfunktion til at gengive siden 'check_for_theme_issues'funktion ) =_id = '='->domæne . _user_to_blog. ._idInspicering af databasetabeller: Hvis du har mistanke om problemer med Multisite-databasetabellerneget_blog_prefix kan du bruge $user_id, 'subscriber' ->sti .

  1. Tilpasning af multisite-registrering: Hvis du vil tilpasse brugerregistreringsprocessen for Multisite, kan du bruge wpmu_validate_user_signup filteret. Her er et eksempel, der søger efter et bruger=ret registreringsfelt med navnet "firma":
 =
Løsning: Sørg for, at jokertegn-underdomæner er korrekt konfigureret til at pege på din WordPress-installation. Kontakt din hostingudbyder for at få hjælp, hvis det er nødvendigt. custom_validate_user_signup. . $wpdb , få_resultater Programmatisk oprettelse af et nyt websted og tildeling af et tema: For programmæssigt at oprette et nyt websted i Multisite og tildele det et specifikt tema, kan du bruge issetKopiér kode Kopiér kode 'virksomhed'] ) $user_idfunktionen sammen med en loop til at hente og udlæse webstedsoplysningerne. Her er et eksempel: $_POST6funktion. =, // Menutitel,$user_idadd; ,, __) ,, ) $site_id ) ;, 'WP_DEBUG_DISPLAY '= Fejlfinding af plugin-konflikter: Hvis du støder på problemer med plugins i dit Multisite-netværk, skal du følge disse trin for at fejlfinde:, = Brug
  1. = wpmu_new_blog funktion
 
; send_site_creation_notificationhandlingskrogen til at vise en fejlmeddelelse, hvis et specifikt tema forårsager problemer: , $user_id, ,, $path, =_id, $meta ) -> ,_url = {, $blog_id check_for_theme_ssues $admin_email = get_userdataget_blog_prefix ) $user_id )->user_email; Kopiér kode = { ,_url."; wp_mail$table_prefix $admin_email, [, ) add (( ,, 'send_site_creation_notification', 10, 6 "SELECT * FROM
  1. $resultat ); Programmatisk skift af temaer til et websted: For at skifte temaer programmæssigt for et specifikt websted inden for Multisite-netværket, kan du bruge
 
function limit_site_creation_to_super_admins( $result ) { if Kopiér kodefunktion $result[$blog_id]->add( (, __( Kopiér kode, ( ( , $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 ); } // Erstat med det ønskede websteds-id( 'wp_delete_site', 'log_site_deletion' );
  1. ; , (
 
$site_id = get_main_site_id; switch_to_blog( $site_id ); switch_theme( Kopiér kode ); = Visning af en liste over websteder i et multisite-netværk på en side: For at vise en liste over websteder i Multisite-netværket på en side, kan du bruge
  1. $site admin_init (
 
function restrict_multisite_admin_access() { if ( ! current_user_can( $site - >domæne . ', Sti: '( $site ->sti . ,( __( (, switch_theme() funktionen. Her er et eksempel: add_action( $nyt_websted_domæne, 'nyt websted.eksempel.com' );
  1. $nyt_websted_sti = (
 
; = get_sites foreach ( Aktivering af fejlfinding til fejlfinding: For at aktivere fejlretning i WordPress Multisite og få mere detaljerede fejlmeddelelser, kan du tilføje følgende kode til as $site 'admin @example.com' add_action (); . $site->blog_id . // Opret det nye websted . $siteBrug ( . $site// Tildel temaet '<br>'; }

,

  1. get_user_by wpmu_create_blog() 'login' switch_theme() );
 
. = $site; 'Brugerdefineret menu' = '/'; $new_site_title = (; $new_site_admin = 'admin'; Kopiér kode = =; '

Webstedets 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 ; Kopiér kode switch_to_blog( $new_site_id ); ); switch_theme( $theme_to_assign ); get_site_url restore_current_blog();

  1. ; // Tilføj dit brugerdefinerede sideindhold her ; }
 
$sites = get_sites(); foreach ( $sites as $site { Sådan interagerer du med WordPress Multisite Programmatically ( . $site->blog_id . '</h2>'; echo ( . $siteSkift midlertidigt til et standardtema (f.eks. Twenty Twenty-One) for at kontrollere, om problemet er relateret til det aktuelle tema. '</p>'; echo ( . $site); '</p>'; echo ( . get_site_url( $site->blog_id ) . '</p>'; }
  1. Fejlfinding af WordPress Multisite: network_admin_menu Problem: "ERR_TOO_MANY_REDIRECTS" fejl ved adgang til et websted på netværket. Løsning: Tjek webstedets URL-indstillinger i netværksadministratorens dashboard. Sørg for, at de er korrekt konfigureret med det valgte underdomæne eller undermappestruktur. Problem: Manglende eller forkerte omskrivningsregler.
 
function custom_network_menu_item() { add_submenu_page( (); ,funktion );define 'manage_network' ,, // Menu slug 'custom_menu_page_callback' define add_action( ,, 'custom_network_menu_item' ); function custom_menu_page_callback() { echo funktion; ( }

{

  1. if
  • (

    • er_plugin_active
  • (

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

    Konfliktende plugin er aktiv. Deaktiver det venligst.

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

    Temaet forårsager problemer. Skift venligst til et andet tema.

    '
 
function check_for_plugin_conflicts() { if ( funktion til at hente tabelpræfikset for et specifikt websted og derefter inspicere de tilsvarende tabeller.( Kopiér kode ) ) { echo '<div class="error"><p>Conflicting Plugin is active. Please deactivate it.</p></div>'wordpress multisite, multisite kodeeksempler, wp multisite, wordpress multisite fejlfinding, multisite netværk, multisite tema, multisite tema wordpress add_action( 'network_admin_notices', 'check_for_plugin_conflicts' );
  1. );
  • // Eksempel: Undersøg indlægstabellen for site ID 2
  • $posts_table network_admin_notices $table_prefix
 
function $resultater() { 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" );