WordPress Multisite: Komplexní průvodce pro vývojáře s ukázkami kódu
WordPress Multisite je výkonná funkce, která vám umožňuje vytvářet a spravovat více webů pomocí jediné instalace WordPress. Nabízí řadu výhod, jako je centralizovaná správa, sdílené zdroje a zjednodušená údržba. V tomto článku prozkoumáme koncept WordPress Multisite, prodiskutujeme jeho výhody a poskytneme ukázky kódu, které vám pomohou využít jeho plný potenciál.
- Nastavení více stránek WordPress: Chcete-li povolit funkci více stránek, musíte provést několik úprav ve své instalaci WordPress. Postupujte takto:
Krok 1: Zálohujte své soubory a databázi WordPress.
Krok 2: Otevřete soubor wp-config.php
a přidejte následující řádek nad komentář "To je vše, přestat upravovat!":
define( 'WP_ALLOW_MULTISITE', pravda );
Krok 3: Uložte soubor wp-config.php
file a refresh your WordPress admin dashboard.
Step 4: Go to "Tools" → "Network Setup" and follow the on-screen instructions.
- Konfigurace nastavení sítě pro více míst: Po nastavení WordPress Multisite musíte nakonfigurovat jeho síťová nastavení. Zde jsou kroky:
Krok 1: Vyberte si mezi strukturou subdomény nebo podadresáře:
- Struktura subdomény:
- Nakonfigurujte subdomény se zástupnými znaky (*.yourdomain.com), aby odkazovaly na vaši instalaci WordPress.
- Vyberte \ Volba "Subdomény" během nastavování sítě.
- Struktura podadresářů:
- Není vyžadována žádná konfigurace serveru.
- Během nastavování sítě vyberte možnost "Podadresáře".
Krok 2: Definujte podrobnosti sítě:
- Zadejte název sítě a e-mail správce.
- V případě potřeby upravte e-mailové adresy správce sítě a správce webu.
Krok 3: Dokončete instalaci:
- Klikněte na tlačítko "Instalovat".
- Sledovat poskytnuté pokyny k aktualizaci souborů
wp-config.php
and.htaccess
soubory.
- Správa sítě s více místy: Jakmile je Multisite nastaveno, správa sítě se stává zásadní. Zde je návod, jak můžete procházet sítí Multisite a provádět základní úkoly programově:
- Přístup k správci sítě:
- Pro programový přístup k řídicímu panelu správce sítě můžete použít následující kód:
přepnout_do_sítěakční háček. Zde je příklad$cesta který odešle e-mail s upozorněním správci webu: get_main_site_id'Oznámení o vytvoření webu''wpmu_new_blog' filtr. Zde je příklad:
- Vytváření nových webů:
- K vytvoření nových webů použijte funkci
wpmu_create_blog)if })
programově:
- K vytvoření nových webů použijte funkci
wpmu_create_blog; $newdomainZde je několik dalších příkladů kódu: Kopírovat kódOmezení Vytvoření webu pro superadministrátory:
Pokud chcete omezit vytváření stránek pouze na superadministrátory'new-theme' můžete použít filtr $titleKopírovat kód ! Přizpůsobení mazání vícestránkových stránek:
Chcete-li provést další akce'Web smazán: ' když je web odstraněn v Multisitefunkce můžete použít háček $site Omezení přístupu ke správě více míst:
Pokud chcete omezit přístup k řídicímu panelu pro správu více míst pouze na superadministrátory'ID webu: ' můžete použít háček get_sites ) $meta $ site_id návrat
- Přepnutí na web:
- Pro programové přepnutí na konkrétní web v síti použijte následující kód:
 )$theme_to_assign') ) {'= Načtení seznamu stránek v síti:
Chcete-li získat seznam webů v síti Multisitefunkce spolu s funkcí můžete použít funkci add_submenu_pagefunkce)
- Správa síťových pluginů a motivů:
- Programově můžete povolit nebo zakázat pluginy a motivy pro celou síť pomocí
activate_pluginrestrict_multisite_admin_access '
action hook) Zde je příklad:Web: ') )
deactivate_plugins'= doména: ')
apřepnout_na_blog Zde je příklad:)'settings, // Požadovaná schopnostphp' Zde je příklad:)
funkce'network_admin_menu'
- Programově můžete povolit nebo zakázat pluginy a motivy pro celou síť pomocí
- Háčky a filtry specaction hook) Zde je příklad který zaznamenává smazání webu:ické pro více webů: WordPress Multisite poskytuje další háčky a filtry pro rozšíření jeho funkčnosti. Zde je několik příkladů:
wp_initialize_site
:- Spustí se při vytvoření nového webu.
- Umožňuje provádět vlechotní akce během inicializace webu.
Běžné problémy a řešení:
:- Přidává vlastní položky nabídky do řídicího panelu správce sítě.
- Užitečné pro rozšíření funkčnosti sítě.
wpmu_new_user
:- Spustí se'Nové stránky mohou vytvářet pouze superadministrátoři.' když je do sítě přidán nový uživatel.
- Umožňuje přizpůsobení procesu registrace uživatele.
Závěr: WordPress Multisite je výkonná funkce'textová doména' která dokáže zefektivnit správu více webů v rámci jedné instalace WordPress. Podle kroků uvedených v tomto
Zde jsou některé příklady kódu:
- Programatické přidávání uživatelů na stránky:
Chcete-li přidat uživatele na konkrétní stránky v síti Multisitefalse // Slug nadřazené nabídky můžete použít
, // Název stránky_user_to_blogakční háček spolu s funkcísouboru těsně nad komentářem "To je vše, přestat upravovat!":
funkce. Zde je příklad:
 'Vlastní nabídka'Kopírovat kód = 'Doména: '
. 'vlastní- menu'Kopírovat kód 'uživatelské jméno' )->ID// Funkce zpětného volání k vykreslení stránky
action hook k zobrazení chybové zprávyOdstraňování problémů s motivem:
Pokud narazíte na problémy s motivy ve vaší síti MultisiteKopírovat kód postupujte při odstraňování problémů takto: pokud je konfliktní plugin aktivní:funkce
'check_for_theme_issues'
=_id = '='->doména .
_user_to_blog. ._idKontrola databázových tabulek:
Pokud máte podezření na problémy s tabulkami databáze Multisiteget_blog_prefix můžete použít $user_id, 'subscriber' ->cesta .
- Přizpůsobení registrace více stránek:
Chcete-li upravit proces registrace uživatele pro Multisite, můžete použít filtr
wpmu_validate_user_signup
filtr. Zde je příklad, který kontroluje vlastní registrační pole s názvem "společnost":
 =Řešení: Zajistěte, aby subdomény se zástupnými znaky byly správně nastaveny tak, aby odkazovaly na vaši instalaci WordPress. V případě potřeby kontaktujte svého poskytovatele hostingu. custom_validate_user_signup. Programové vytvoření nového webu a přiřazení motivu:
Chcete-li programově vytvořit nový web v Multisite a přiřadit mu konkrétní téma, můžete použít $wpdb ,
získat_výsledky Kopírovat kód isset spolu se smyčkou pro načtení a výstup informací o webu. Zde je příklad: Kopírovat kód 'společnost']) $user_id. $_POST6funkceodeslat oznámení_vytvoření_webu
=, // Název nabídky,$id_uživateleadd; ,, __definovat ,, ) $site_id
'WP_DEBUG_DISPLAY ' ;,
== Konflikty pluginů pro odstraňování problémů:
Pokud narazíte na problémy se zásuvnými moduly ve vaší síti Multisite, postupujte při odstraňování problémů podle následujících kroků:, = Použijte
- akční háček k zobrazení chybové zprávy, pokud určité téma způsobuje problémy:
wpmu_new_blog
funkce
; )) $blog_id, $user_id, $domain, $path, =_id, $meta ) ->
,_url = {, $blog_id $results
$admin_email = get_userdataget_blog_prefix ) $user_id )->user_email;
) = { ,_url.";
wp_mail$table_prefix $admin_email, [, $message add
(( ,, 'send_site_creation_notification', 10, 6 "SELECT * FROM
- $výsledek
);
Programové přepínání motivů pro web: Chcete-li programově přepínat témata pro konkrétní web v síti Multisite, můžete použít funkci
function limit_site_creation_to_super_admins( $result ) {
if is_super_adminfunkce
$result['errors']->add( 'super_admin_only', __( Kopírovat kód, ( (
, $result}
add_filter( 'wpmu_validate_blog_signup', 'limit_site_creation_to_super_admins' );
=
- get_main_site_id
wp_delete_site
přepnout_na_blog
function log_site_deletion( $blog_id ) {
error_log( admin_init . $blog_id );
}
// Nahraďte požadovaným ID webu( 'wp_delete_site', 'log_site_deletion' );
- ;
,
(
$site_id = get_main_site_id;
'Cesta: '
( $site_id );
switch_theme( Kopírovat kód );
( Zobrazení seznamu webů v síti s více místy na stránce:
Chcete-li na stránce zobrazit seznam webů v síti Multisite, můžete použít funkci
- $site
admin_init
(
function restrict_multisite_admin_access() {
if ( ! current_user_can( $site - >doména . ', Cesta: '( $site ->cesta .
,( __( (, switch_theme() . Zde je příklad:
add_action( ., $site );
- // Přiřadit motiv
=
(
; = get_sites
Kopírovat kód ( Povolení ladění pro odstraňování problémů:
Chcete-li povolit ladění ve WordPress Multisite a získat podrobnější chybové zprávy, můžete přidat následující kód do as $site 'admin @example.com'
add_action (); . $site'Vlastní nabídka' // Vytvořit nový web . $sitePoužijte ( . $site->id_blogu . '<br>';
}
,
- 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';
Kopírovat kód = =;
'Adresa URL webu: '
= 'twentytwenty';
as
$new_site_id = wpmu_create_blog( $new_site_domain, $new_site_path, $new_site_title, get_user_by( 'login', $new_site_admin ;
Kopírovat kód
switch_to_blog( $new_site_id );
);
switch_theme( $theme_to_assign );
get_site_url
restore_current_blog();
- ;
// Sem přidejte svůj vlastní obsah stránky
; }
$sites = get_sites();
foreach ( $sites as $site {
Jak interagovat s WordPress Multisite programově ( . $site->blog_id . '</h2>';
echo 'spravovat_síť' . $sitepravda '</p>';
echo ( . $site); '</p>';
echo ( . get_site_url( $site->blog_id ) . '</p>';
}
- Odstraňování problémů WordPress Multisite:
network_admin_menu
Problém: "ERR_TOO_MANY_REDIRECTS" chyba při přístupu na web v síti.Řešení: Zkontrolujte nastavení adresy URL webu v řídicím panelu správce sítě. Ujistěte se, že jsou správně nakonfigurovány se vybranou subdoménou nebo strukturou podadresářů.
Problém: Chybějící nebo nesprávná pravidla přepisu.
function custom_network_menu_item() {
add_submenu_page(
();
,pravda
);,
(
,, // Menu slug
'custom_menu_page_callback' =
add_action( ,, 'custom_network_menu_item' );
function custom_menu_page_callback() {
echo funkce;
(
}
{
- if
(
- funkce k načtení předpony tabulky pro konkrétní web a následné kontrole odpovídajících tabulek.
(
- 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
- ''
Konfliktní plugin je aktivní. Prosím deaktivujte jej.
wp-config.php
add_action
(( 'WP_DEBUG', Dočasně přepněte na výchozí motiv (např. Twenty Twenty-One) a zkontrolujte, zda problém souvisí s aktuálním motivem. );
define( 'WP_DEBUG_LOG', funkce );
define( {, ( );
- $posts_table
- 'vaše -theme-folder/your-theme-style.css'
- );
network_admin_notices
''Motiv způsobuje problémy. Přepněte prosím na jiný motiv.
function check_for_plugin_conflicts() {
if ( is_plugin_active( Kopírovat kód ) ) {
echo '<div class="error"><p>Conflicting Plugin is active. Please deactivate it.</p></div>'wordpress multisite, příklady kódu pro více webů, wp multisite, wordpress multisite odstraňování problémů, multisite network, multisite theme, multisite theme wordpress
add_action( 'network_admin_notices', 'check_for_plugin_conflicts' );
- );
- // Příklad: V tabulce příspěvků zkontrolujte ID webu 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' );
- 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" );