it-swarm.com.de

Fügen Sie dynamisch zusätzliche Netzwerkkonstanten zu wp-config.php hinzu

Wenn Sie mit einer neuen Netzwerkinstallation beginnen, ist der erste Schritt eine Einzelstandortinstallation mit einer zusätzlichen Zeile in der Datei wp-config.php:

define( 'WP_ALLOW_MULTISITE', true );

Danach müssen wir zu Tools > Network Setup gehen, 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, besteht aus zwei Schritten:

  1. Fügen Sie Ihrer wp-config.php -Datei zusätzliche -Konstanten hinzu

    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 );
    
  2. Fügen Sie Ihrer .htaccess-Datei einige Regeln hinzu.

Da ich keine einzelnen 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 jedes Mal zum wp-config.php gehen und ihn erneut bearbeiten.

Das 1st , an das ich dachte, war, die Datenbank auf die {$wpdb->prefix}sitemeta -Tabelle zu überprüfen, aber ich möchte nicht bei jedem Laden der Site eine zusätzliche Abfrage durchführen. Das 2nd , woran ich dachte, war zu überprüfen, ob der blogs.dir bereits existiert, aber das ist nicht der Fall.

Frage: Wie kann ich darauf hinweisen, dass ich den ersten Schritt der Netzwerkeinrichtung bereits so bestanden habe, dass kein massiver Overhead entsteht oder die Leistung abnimmt.

10
kaiser

Ich habe dies nicht getestet, aber wenn Sie eine solche Lösung finden müssen, würde ich wahrscheinlich versuchen, dies folgendermaßen zu tun, indem Sie ein Skript in die oben beschriebene if ( SOME_CHECK_IF_STEP-1_WAS_PASSED )-Bedingung einfügen:

  • überprüfen Sie die Datenbank für die Tabelle {$wpdb->prefix}sitemeta.
  • wenn es nicht existiert -> return false;
  • wenn es existiert -> füge einen WP cron Job hinzu, um den wp-config.php neu zu schreiben -> gebe true zurück.

Der Cron-Job WP würde den wp-config.php umschreiben, um die Überprüfung vollständig zu eliminieren.

Auf diese Weise haben Sie nur eine zusätzliche DB-Anfrage, bis das Netzwerk eingerichtet ist und der Cron-Job seine Magie vollbracht hat.

Beachten Sie, dass dies die Mühe wert ist, obwohl ...;)

1
Alain Schlesser