wie man is_admin in wp-config.php benutzt

Ich versuche, verschiedene databaseen für Admin und Benutzer zu wählen, um die Belastung der database zu verringern. in wp-config.php, wenn ich versuche, den Code zu verwenden

if(is_admin()) { define('DB_NAME', 'wp_db'); } else { define('DB_NAME', 'other_wp_db'); } 

Beide databaseen verwenden denselben Benutzernamen und dasselbe Passwort.

Ich bekomme einen Fehler von

Schwerwiegender Fehler: Aufruf von undefinierter function is_admin () in D: \ xampp \ htdocs \ wordpress \ wp-config.php in Zeile 24

Wie benutzt man die is_admin () function in der wp-config.php Datei?

Kann mir bitte jemand helfen.

Solutions Collecting From Web of "wie man is_admin in wp-config.php benutzt"

Ich würde vorsichtig sein, weil Sie davon ausgehen, dass alle Ihre databaseänderungen nur innerhalb des Admin-Backends stattfinden, aber das ist möglicherweise nicht immer der Fall. Der wp-cron kommt in den Sinn, aber es gibt auch einige Plugins, die Front-End-Schreibvorgänge verwenden. Sie können also mit dieser Methode unangenehme Synchronisierungsprobleme mit Ihren beiden databaseen bekommen.

Es gibt viele Dinge, die Sie tun können, bevor Sie die Master / Slave- Route gehen:

  • Überprüfen Sie zum Beispiel Ihre Logs, ob da etwas Seltsames passiert.
  • Vielleicht ist es ein Plugin, das dir Probleme bereitet?
  • Vielleicht haben Sie eine WP_Query , die nicht effizient ist?
  • Vielleicht können Sie die Transienten-API verwenden?
  • Vielleicht können Sie den persistenten Objekt-Cache in Betracht ziehen?
  • Es gibt viele Cache-Plugins, die helfen können.
  • Vielleicht verlangsamt die Hosting-Umgebung Sie?
  • Vielleicht ist der MySQL-Server nicht gut genug abgestimmt? Einige hilfreiche Tuning-Skripte existieren.
  • Vielleicht ist es an der Zeit PHP, MySQL und NginX zu aktualisieren 😉

Wenn Sie sich dafür entscheiden, dass diese Route notwendig ist, gibt es bereits Lösungen wie das HyperDB- Plugin, das Ihnen ein db.php Drop-In zur Verfügung stellt, das in das wp-content Verzeichnis gestellt wird. Es prüft in den eingehenden SQL-Abfragen auf Schreibvorgänge / Aktualisierungen und leitet sie an die Master-database um. Aber ich habe gerade die Quelle durchsucht und es sieht so aus, als ob sie nicht die mysqli Erweiterung unterstützt, mysqli nur die veraltete mysql . Wenn Sie das nicht gerne selbst tun, gibt es mindestens eine mysqli , die mysqli unterstützt (ich bin nicht mit diesem Projekt verbunden).

Es ist zu früh, um diese integrierte WP-function zu verwenden. Sie können es in einigen Plugin- oder Themendateien verwenden, aber nicht, wenn WP enviroment noch geladen wird.

Da ich mir nicht wirklich sicher bin, ob Ihre Absicht wirklich richtig ist, müssen Sie auf andere Weise (mit nativen functionen von PHP) zwischen Frontend und Administration unterscheiden. Zum Beispiel so etwas:

 if( strpos($_SERVER['REQUEST_URI'],'/wp-admin/') !== FALSE ) { define('DB_NAME', 'wp_db'); } else { ... } 

Aber ich denke nicht, dass es kugelsichere Lösung ist. Ajax call wird in der Administration verarbeitet, wp-login.php ist nicht im obigen Code enthalten, etc.

Versuchen Sie, Ihren Code einzufügen

 if(is_admin()) {...} 

NACH

 require_once(ABSPATH . 'wp-settings.php'); 

Weil die function is_admin () geladen wird, während wp-setting.php ausgeführt wird. Auf diese Weise können Sie die Fehlermeldung vermeiden, aber ich kann nicht verstehen, warum Ihre Website nur für Administrator ordnungsgemäß funktioniert? Es scheint der semantische Fehler zu sein. Ich denke, einige Komponenten werden auch unter Administrator nicht korrekt funktionieren.