Wenn Sie mit einer Neuinstallation des Netzwerks beginnen, ist der erste Schritt eine Installation an einem einzelnen Standort mit einer zusätzlichen Zeile in der wp-config.php
Datei:
define( 'WP_ALLOW_MULTISITE', true );
Danach müssen wir Tools > Network Setup
einige Details wie den Netzwerknamen und die Superadministrator-E-Mail eingeben und schließlich auf die Schaltfläche klicken, um das Setup auszuführen.
Der nächste Schritt, der angezeigt wird, sind zwei Schritte:
Fügen Sie Ihrer Datei zusätzliche Konstanten hinzu
wp-config.php
define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', 'example.com' ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', true ); define( 'BLOG_ID_CURRENT_SITE', true );
- Fügen Sie Ihrer
.htaccess
Datei einige Regeln hinzu .
Da ich keine Single-Site-Installationen mehr durchführe (kein Grund mehr dafür), möchte ich diese Konstanten dynamisch zu meiner wp-config.php
Datei hinzufügen :
define( 'WP_ALLOW_MULTISITE', true );
if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )
{
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', true );
define( 'BLOG_ID_CURRENT_SITE', true );
}
Ich muss also nicht wp-config.php
jedes Mal zum gehen und es erneut bearbeiten.
Das erste, was mir in den Sinn kam, war, die {$wpdb->prefix}sitemeta
Datenbank auf die Tabelle zu überprüfen , aber ich möchte nicht bei jedem Laden der Site eine zusätzliche Abfrage durchführen. Das zweite, woran ich dachte, war zu überprüfen, ob das blogs.dir
bereits existiert, aber das ist nicht der Fall.
Frage: Wie kann ich angeben, dass ich den ersten Schritt des Netzwerk-Setups bereits so bestanden habe, dass kein massiver Overhead entsteht oder die Leistung abnimmt?
wp-config
.Antworten:
Ich habe dies nicht getestet, aber wenn Sie eine solche Lösung finden müssten, würde ich wahrscheinlich versuchen, dies auf folgende Weise zu tun, indem ich ein Skript in die
if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )
oben beschriebene Bedingung einfüge.{$wpdb->prefix}sitemeta
Tabelle.wp-config.php
-> geben Sie true zurück.Der WP-Cron-Job würde das umschreiben
wp-config.php
, um die Prüfung vollständig zu eliminieren.Auf diese Weise haben Sie nur eine zusätzliche DB-Anforderung, bis das Netzwerk eingerichtet ist und der Cron-Job seine Magie ausgeführt hat.
Beachten Sie jedoch, dass sich die Mühe lohnt ...;)
quelle
wp-config.php
Datei direkt ändern , aber ich nehme an, dass sie an diesem Punkt gesperrt sein würde ...Inspizieren
wp-admin/network.php
und archivierenwp-admin/includes/schema.php
. Sie können eine Bedingung basierend auf WP_INSTALLING_NETWORK erstellenAktualisieren:
quelle
wp-load.php
zieht inwp-config.php
früher, soWP_INSTALLING_NETWORK
wird nicht definiert werden. Aber selbst wenn es verfügbar wäre, ist es nur während der Netzwerkeinrichtung verfügbar. Was würde ich tun, um die Konstanten nach der Installation beizubehalten?index.php
zieht./wp-blog-header.php
), die dann ziehtwp-load.php
und von dortwp-config.php
heißt. Eine Übersicht finden Sie hier .admin.php
selbst wird vorsetup.php
und aufgerufennetwork.php
(und ruftwp-load.php
sich am Anfang auf), daher wurde config bereits ausgeführt.WP_INSTALLING_NETWORK
gehtdefine()
ohne zu prüfen ob es schon istdefined()
, würde ich dort ein erstellenFatal Error
. Bitte beweisen Sie mir das Gegenteil und testen Sie es. :)wp-config.php
Datei ist jedoch ein Sicherheitsrisiko. Bedenken Sie, dass Sie dort alle wichtigen Details haben. Ich habe Ihnen gezeigt, dass dies auf keinen Fall funktionieren würde (ohne eine beschreibbare Konfigurationsdatei). Was ich suche, ist ein Indikator (der das System nicht verlangsamt), den ich überprüfen und als Schalter verwenden kann. Alles andere wird nicht funktionieren.Wenn Ihr Setup jedes Mal dasselbe ist (Installation der Subdomain), können Sie möglicherweise den gesamten Block in Ihrem ersten Schritt einfügen:
define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', true ); define( 'DOMAIN_CURRENT_SITE', $_SERVER[ 'HTTP_HOST' ] ); define( 'PATH_CURRENT_SITE', '/' ); define( 'SITE_ID_CURRENT_SITE', true ); define( 'BLOG_ID_CURRENT_SITE', true );
quelle
DOMAIN_CURRENT_SITE
Konstante zu liefern, die WordPress Ihnen nach Abschluss des internen Setups gibt.