Das Entwicklerhandbuch für Fortgeschrittene zur Datei wp-config.php
Veröffentlicht: 2022-09-28 Wie gut kennst du wp-config
wirklich? In diesen wenigen PHP-Zeilen steckt überraschend viel Leistung! Dieser Artikel ist eine Tour durch einige Teile von wp-config
, von denen Sie vielleicht nichts wussten, aber wirklich sollten.
Weißt du alles über die Datei wp-config.php
? Haben Sie die gesamte WordPress-Dokumentationsseite darüber gelesen? Bis zum Schluss?
Wenn Sie bereits mit den Grundlagen von wp-config
vertraut sind, wird das Lesen der offiziellen WordPress-Dokumentation wahrscheinlich ein richtiges Schlummerfest sein.
Wenn Sie die echten Entwickler-Leckereien wollen, nett nach Themen gruppiert und geliefert mit dem, was man nur als „völlig unnötigen Enthusiasmus über ein paar PHP-Konstanten“ bezeichnen könnte, dann bleiben Sie dabei: Ich bin dabei, wp-config.php
wieder cool zu machen.
Inhaltsverzeichnis
- Wer sollte das lesen?
- Warum sollten Sie das lesen?
- Die Grundlagen
- Anzeigen von wp-config-Konstanten
- Aufschlüsselung des
wp-config.php
- wp-config kann nach oben verschoben werden
- Der Setup-Bildschirm wird geladen, wenn es keine wp-config.php-Datei gibt
- wp-config.php wird sehr früh geladen
- Leg dich nicht mit wp-config.php an!
- Überprüfen/Fusseln Ihrer wp-config.php-Datei
- Sichern von WordPress mit wp-config.php
- wp-config.php vor Website-Besuchern schützen
- Rotierende Schlüssel/Salze
- Dinge bewegen und verstecken
- Deaktivieren der Datei-Editoren
- Automatische Updates deaktivieren
- Verhindern von externen HTTP-Anforderungen
- Sachen bewegen
- Verschieben der Benutzer- und Usermeta-Tabellen
- Verschieben Sie Inhalts-, Upload- und Plugin-Verzeichnisse
- Inhaltsbezogene Einstellungen
- Website- und Dashboard-URLs ändern
- Beitragseinstellungen
- Post-Revisionen
- Ändern des Autosave-Intervalls
- Einpacken
Wer sollte das lesen?
Dieser Artikel richtet sich an Entwickler und fortgeschrittene Benutzer, die bereits wissen, wie man die Datei wp-config.php
bearbeitet, und einige der Konfigurationseinstellungen kennen, die Sie darin eingeben können.
Ich werde Ihnen nicht sagen, wie Sie die Datei mit FTP oder cPanel bearbeiten oder warum Sie sie nicht mit MS Word bearbeiten sollten.
Ich werde Ihnen nicht sagen, wie Sie Ihre Datenbank konfigurieren oder ältere Einstellungen durchgehen, die Sie 2013 verwendet haben, aber wirklich nicht mehr benötigen sollten. Und die meisten Gastgeber kümmern sich sowieso um die Basics für dich.
Wenn Sie neu bei wp-config.php
sind, gibt es keinen Mangel an Leitfäden, die Ihnen die Grundlagen vermitteln, oder Sie können jederzeit in die offizielle Dokumentation eintauchen.
Warum sollten Sie das lesen?
Ja, ja, ich höre dich. Wenn die grundlegenden Details dessen, was Sie in diesen Artikel einfügen können, alle an anderer Stelle behandelt werden und Ihr Gastgeber sich sowieso um die meisten Grundlagen kümmert, warum sollten Sie dies lesen? Und in der Tat, warum verbringe ich meine Zeit damit, es zu schreiben?
Nun, wenn Sie mit der Bearbeitung von wp-config.php
sind und die Grundlagen dessen kennen, was es tut, dann sind Sie wahrscheinlich zumindest ein fortgeschrittener WordPress-Entwickler.
Sie sind wahrscheinlich zumindest teilweise für das Hosten großer Websites verantwortlich, wahrscheinlich für Kunden. Sie müssen also wissen, wie Sie diese Datei im Notfall verwenden können. Und genug Verständnis für diese Datei zu haben, damit Sie nichts falsch machen, wenn Sie sie bearbeiten.
Darüber hinaus möchten Sie mit ziemlicher Sicherheit bestimmte Funktionen von WordPress sperren, die über das hinausgehen, was Ihr Host Ihnen erlaubt, automatisch zu konfigurieren.
Es ist wahrscheinlich, dass es Dinge gibt, von denen Sie nicht einmal wissen, dass Sie sie mit wp-config.php
tun können ! Einige "Aha!" Momente zu haben.
Dieser Artikel ist ein nützlicher Bezugspunkt für die Konfiguration einiger Interna von WordPress. Also lesen Sie weiter, setzen Sie ein Lesezeichen und teilen Sie es mit Ihren Freunden und Kollegen.
Die Grundlagen
Ich sagte, dies sei kein Artikel für Anfänger, aber wir sollten die grundlegenden Fakten ermitteln, um sicherzustellen, dass wir am gleichen Ausgangspunkt sind.
Die Datei wp-config.php
sich im Stammverzeichnis Ihrer WordPress-Installation (sie kann auch an anderen Orten vorhanden sein, aber dazu kommen wir noch), wird als Teil der WordPress-Initialisierung geladen und ermöglicht Ihnen, den WordPress-Kern zu konfigurieren.
Es ist für den Betrieb von WordPress unerlässlich. Es speichert eine Reihe von Konstanten, mit denen Sie Folgendes angeben können:
- Die Datenbankverbindung und das Tabellenpräfix, die WordPress verwendet.
- Sicherheitsinformationen wie Salts und Authentifizierungsschlüssel.
- Einstellungen für andere Funktionen des WordPress-Kerns wie
WP_CACHE
undWP_DEBUG
. - Einstellungen für Plugins, die der Datei ihre eigenen Optionen hinzufügen können.
- Ihre eigenen Konfigurationsmöglichkeiten.
Entscheidend ist, wp-config.php
eine umgebungsspezifische Datei ist. Ihr Inhalt kann (und sollte!) für verschiedene Sites unterschiedlich sein. Sogar lokale, Staging- und Live-Kopien derselben Site haben unterschiedliche Werte in der Datei.
WordPress wird mit einer wp-config-sample.php
Datei geliefert, die das Nötigste an Details enthält, die WordPress zum Funktionieren benötigt. Sie könnten dies als Teil der Installation in Ihre eigene wp-config.php
kopieren, aber heutzutage wird das normalerweise für Sie erledigt.
Beachten Sie abschließend, dass es möglich ist, dass Sie beim Öffnen einer wp-config.php
Datei von einer vorhandenen Website einige alte PHP-Konstanten für Legacy-Funktionen wie Standarddateiberechtigungen und FTP-Anmeldeinformationen zum Ausführen von Upgrades sehen. Wir werden diese hier nicht behandeln, da es unwahrscheinlich ist, dass Sie sie verwenden müssen.
Anzeigen von wp-config-Konstanten
Es gibt einige Möglichkeiten, die Werte von WordPress-Konstanten schnell zu überprüfen, ohne per SSH zu einem Remote-Server zu gehen und die Datei zu öffnen.
Mit der Site Health-Funktion des WordPress-Kerns können Sie einige grundlegende Werte anzeigen, indem Sie zu Tools -> Site Health -> Info -> WordPress-Konstanten navigieren. Datenbankkonstanten sind auch im Abschnitt „Datenbank“ auf derselben Seite zu sehen.
Das Query Monitor-Plug-in verfügt über ein „Environment“-Panel, in dem Sie einige häufig verwendete wp-config
Konstanten sehen können.
WP-CLI, die WordPress-Befehlszeilenschnittstelle, verfügt über einen Befehl wp config
, mit dem Konstanten in wp-config.php
und festgelegt werden können. Dies würde normalerweise erfordern, dass Sie zuerst SSH verwenden, aber wenn Sie Aliase in Ihrer WP-CLI-Konfiguration einrichten, können Sie eine schnelle Verknüpfung erstellen, um Konstanten in entfernten wp-config
Dateien anzuzeigen und zu ändern.
Aufschlüsselung des wp-config.php
Es ist nützlich zu wissen, wann die Datei wp-config.php
wird, da dies einige der Dinge bestimmt, die Sie damit tun können und was nicht. Es ist eine gute Übung, den Ladevorgang zu verfolgen:
WordPress beginnt mit dem Laden der Datei
index.php
. Dies erfordert die Dateiwp-blog-header.php
.So ziemlich das erste, was
wp-blog-header.php
tut, ist das Laden vonwp-load.php
.Als nächstes setzt
wp-load.php
die ABSPATH-Konstante (das grundlegende WordPress-Kernverzeichnis) und initialisierterror_reporting()
, bevorwp-config.php
.
Dieser Ladevorgang und insbesondere der Code in wp-load.php
können uns einige interessante Dinge beibringen. Hier ist dieser Code:
/* * If wp-config.php exists in the WordPress root, or if it exists in the root and wp-settings.php * doesn't, load wp-config.php. The secondary check for wp-settings.php has the added benefit * of avoiding cases where the current directory is a nested installation, eg / is WordPress(a) * and /blog/ is WordPress(b). * * If neither set of conditions is true, initiate loading the setup process. */ if ( file_exists( ABSPATH . 'wp-config.php' ) ) { /** The config file resides in ABSPATH */ require_once ABSPATH . 'wp-config.php'; } elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) { /** The config file resides one level above ABSPATH but is not part of another installation */ require_once dirname( ABSPATH ) . '/wp-config.php'; } else { // A config file doesn't exist. // [Code here to load the setup screen for in-browser configuration] }
Was sehen wir hier?
wp-config.php kann nach oben verschoben werden
Zunächst sagt uns der Kommentar, dass wir wp-config.php
in den „WordPress-Root“ legen können. Was nicht erwähnt wird, ist, dass das „Root“ tatsächlich ein Verzeichnis über dem ABSPATH
sein kann, in dem sich wp-load.php
.
Wir können diese zusätzliche Überprüfung im elseif
, wo nach dirname( ABSPATH ) . '/wp-config.php'
dirname( ABSPATH ) . '/wp-config.php'
. Die zusätzliche Bedingung im elseif
wird im Kommentar erklärt.
Der Setup-Bildschirm wird geladen, wenn es keine wp-config.php-Datei gibt
Zweitens können wir sehen, dass, wenn eine Konfigurationsdatei nicht existiert, der Setup-Bildschirm geladen wird.
Es ist durchaus möglich, dass Sie diesen Bildschirm noch nie zuvor gesehen haben. Damit können Sie die anfänglichen Konfigurationsinformationen, wie z. B. die Datenbankanmeldeinformationen, in einer webbasierten Benutzeroberfläche eingeben:
Dies ist eine wissenswerte Funktion von WordPress. Wenn Sie jemals die WordPress-Kerndateien auf einem öffentlich zugänglichen Webserver abgelegt haben, aber keine wp-config.php
Datei erstellen, kann jemand anderes (oder wahrscheinlicher ein Bot) vorbeikommen und WordPress auf seine Weise einrichten und möglicherweise Ihr Hosting gefährden.
wp-config.php wird sehr früh geladen
Als Drittes ist zu beachten, dass wp-config.php
sehr früh in der Startsequenz von WordPress geladen wird. Das bedeutet, dass:
Es gibt vieles, was wir in
wp-config.php
nicht tun können. Beispielsweise können wir hier keine Hooks (Aktionen oder Filter) hinzufügen, da die Funktionen und Datenstrukturen dafür noch nicht geladen sind. Und wir haben keinen Zugriff auf die internen Funktionen, Objekte und APIs von WordPress.Wir haben viel Kontrolle darüber, was als nächstes passiert. Da die Datei so früh geladen wird, hat sie großen Einfluss auf WordPress. Das ist sowohl gut als auch schlecht. Wir können WordPress leicht komplett sterben lassen. Aber wir können auch von so ziemlich überall in WordPress auf alles zugreifen, was in
wp-config.php
definiert ist.
Leg dich nicht mit wp-config.php an!
Das Letzte, was wir aus diesem Prozess lernen, ist, dass mit dieser großen Macht große Verantwortung einhergeht.
Am Ende der Datei wp-config.php
befinden sich diese Zeilen:
/* Add any custom values between this line and the "stop editing" line. */ /* That's all, stop editing! Happy publishing. */ /** Absolute path to the WordPress directory. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', __DIR__ . '/' ); } /** Sets up WordPress vars and included files. */ require_once ABSPATH . 'wp-settings.php';
Hier gibt es einige Anweisungen, aber die Zeile „Bearbeitung beenden“ ist wichtig. Nach dieser Zeile folgt die Fortsetzung der Initialisierungssequenz von WordPress. Das Hinzufügen von neuem Code an der falschen Stelle führt wahrscheinlich nur dazu, dass der neue Code keinerlei Wirkung hat. Aber um sicherzugehen, empfehle ich, diese Anweisungen zu befolgen. Sie sind aus gutem Grund da.
Überprüfen/Fusseln Ihrer wp-config.php-Datei
Wenn Sie in der Produktion arbeiten, möchten Sie wirklich keine Fehler in die Datei wp-config.php
. Fehler hier können Ihre Website beschädigen, und Sie erhalten möglicherweise keine nützliche Fehlermeldung, wenn dies der Fall ist.
Du kannst php
auf der Kommandozeile mit der Option -l
(„lint“) ausführen, um deine wp-config.php
Datei auf schwerwiegende PHP-Syntaxfehler zu überprüfen.
$ php -l wp-config.php Analysefehler: Syntaxfehler, unerwartetes Token „require_once“ in wp-config.php in Zeile 9 Fehler beim Parsen von wp-config.php
Sie könnten sogar ein Shell-Skript schreiben, um …
-
wp-config.php
in eine temporäre Datei kopieren, - Bearbeiten Sie die temporäre Datei,
- Lint die temporäre Datei und
- Kopieren Sie es nur zurück, wenn es keine Syntaxfehler enthält.
Wenn Sie mit der Befehlszeile zufrieden sind, ist es sicherer, die WP-CLI-Befehle wie wp config set <name> <value>
zu verwenden, um Werte sicher festzulegen, anstatt dies manuell zu tun.
Sie können Ihre Konfigurationswerte auch mit WP-CLI auflisten (dies ist ein Beispiel, bei dem einige Einträge entfernt wurden – Sie verstehen schon!):
$ wp Konfigurationsliste +---------------------+---------------------- --------------------+----------+ | Name | Wert | Typ | +---------------------+---------------------- --------------------+----------+ | root_dir | /Users/smithers/sites/snpp | variabel | | webroot_dir | /Users/smithers/sites/snpp/public | variabel | | Tabellenpräfix | wp_ | variabel | | WP_HOME | https://snpp.test | konstant | | WP_SITEURL | https://snpp.test/ | konstant | | DB_NAME | snp | konstant | | DB_USER | Wurzel | konstant | | DB_PASSWORT | Montgomery | konstant | | DB_HOST | 127.0.0.1 | konstant | | DB_CHARSET | utf8mb4 | konstant | | DB_COLLATE | | konstant | | DB_PRÄFIX | wp_ | konstant | | WP_DEBUG | 1 | konstant | | WP_DEBUG_LOG | 1 | konstant | | WP_DEBUG_DISPLAY | | konstant | | WP_ENVIRONMENT_TYPE | Entwicklung | konstant | | DISABLE_WP_CRON | | konstant | | DISALLOW_FILE_EDIT | 1 | konstant | +---------------------+---------------------- --------------------+----------+
Diese beiden Techniken könnten Ihnen wirklich Ärger ersparen und Sie davon abhalten, auszuflippen, weil Sie in einer so kritischen Datei versehentlich ein Semikolon an die falsche Stelle gesetzt haben.
Sichern von WordPress mit wp-config.php
Sicherheit ist ein ständig heißes Thema in WordPress. Einige Einstellungen, die wir in der wp-config
Datei ändern können, bringen mehr Tools in unsere Sicherheits-Toolbox.
Diese Teile der wp-config
Datei sind definitiv nicht die einzigen Dinge, die Sie verwenden sollten, um eine gute WordPress-Sicherheit zu erreichen. Stellen Sie sicher, dass Sie die Website-Sicherheit zusätzlich zu den Informationen im folgenden Abschnitt gründlich verstehen.
wp-config.php vor Website-Besuchern schützen
Ihre wp-config
Datei befindet sich standardmäßig im Stammverzeichnis Ihrer Website und enthält zufällig wichtige Informationen wie Ihre Datenbank-Anmeldedaten und Passwort-Salts. Sie möchten nicht, dass diese Informationen öffentlich zugänglich sind, daher sollten Sie sicherstellen, dass Ihre wp-config
Datei vor Website-Besuchern geschützt ist.
Ihr Hosting-Unternehmen wird dies oft für Sie tun. Sie können dies überprüfen, indem Sie versuchen, über Ihren Browser auf die Datei zuzugreifen, indem /wp-config.php
direkt nach Ihrer Domain hinzufügen. Diese URL kann anders sein, wenn Sie die Datei verschoben haben.
Wenn Sie die wp-config
Datei im Verzeichnis über dem Stammverzeichnis Ihrer Website abgelegt haben, sollten Sie sie nicht sehen können. In den meisten anderen Fällen erhalten Sie sowieso nur eine PHP-Fehlermeldung, wenn Sie versuchen, die Datei aufzurufen, sodass hier normalerweise nichts zu tun ist. Aber wenn Sie es richtig sichern möchten, können Sie dies tun, indem Sie die Konfiguration Ihres Webservers (Apache oder Nginx) ändern, um den Zugriff darauf zu blockieren.
Wenn Sie die Datei Ihrer Website in Git speichern, ist es schließlich wichtig, die wp-config
Datei nicht in Ihrem Git-Repository zu speichern. Dadurch könnten wichtige Informationen über Ihre Website preisgegeben werden, aber außerdem möchten Sie wahrscheinlich sowieso in jeder Umgebung eine andere Version dieser Datei. Daher ist es besser, es zu Ihrer .gitignore
-Datei hinzuzufügen und die Dateien in jeder Umgebung manuell zu verwalten.
Rotierende Schlüssel/Salze
Was sind Schlüssel/Salze?
Der Abschnitt „Schlüssel und Salze“ ist einer der mysteriösesten Teile von wp-config
. Dieser Satz seltsam aussehender Konstanten hilft bei der Verschlüsselung von Dingen wie Cookies und Nonces. Ohne auf die Details einzugehen – wie es WP Engine getan hat – fügen sie eine zusätzliche Ebene der Zufälligkeit hinzu, die die Entschlüsselung erschwert, wenn Sie die Salze und Schlüssel nicht kennen.
Warum Schlüssel/Salze „rotieren“?
Zunächst einmal ist „rotieren“ nur ein schickes Wort für „verändern“. Ich weiß nicht, warum wir „drehen“ verwenden. Es ist nicht so, dass wir jemals wieder auf denselben Schlüsselsatz zurückkommen!
Sie sollten wahrscheinlich Ihre Schlüssel und Salze ändern, wenn die Seite gehackt wurde, da Sie nicht garantieren können, dass die Schlüssel und Salze noch geheim sind. Aber vielleicht möchten Sie sie trotzdem regelmäßig rotieren lassen, wie bei Passwörtern, nur um sicherzugehen, dass niemand weiß, was sie sind.
Das Problem mit rotierenden Schlüsseln/Salzen
Das Wechseln von Schlüsseln und Salzen ist nicht ohne Schmerzen. Jeder, der ein Cookie-Set hat, wird es verlieren. Jeder, der eingeloggt ist, wird also gebootet, und jeder mit einem WooCommerce-Warenkorb wird geleert.
Wie man Schlüssel/Salze rotiert
Ich meine, du könntest die wp-config
Datei bearbeiten und einfach ein paar neue zufällige Zeichen über die alten schreiben. Aber das wäre mühsam und Menschen sind nicht sehr gut im Zufälligen.
Lassen Sie mich Ihnen also einige Möglichkeiten erläutern, wie Sie neue Schlüssel/Salze in Ihrer wp-config
festlegen können.
- Schlüssel manuell von einem Generator hinzufügen: Sie können den Generator von wordpress.org verwenden, um den benötigten Code zu erhalten. Kopieren Sie es einfach und fügen Sie es anstelle der alten Werte in die
wp-config
Datei ein. - Verwenden Sie ein Plugin: Viele Sicherheits-Plugins wie Sucuri Security, iThemes Security und Malcare verfügen alle über diese Funktion. Und Salt Shaker ist ein dediziertes Plugin, das diesen Prozess nach einem Zeitplan für Sie automatisiert.
- Verwenden Sie WP-CLI. Haben wir schon gesagt, wie großartig WP-CLI ist? Wir machten? OK. Nun, wir sagen es noch einmal! Und Sie können den Befehl
wp config shuffle-salts
verwenden, um diese Aufgabe in Sekundenschnelle zu erledigen.
Dinge bewegen und verstecken
Sicherheitsleute werden Ihnen sagen, dass „Security by Obscurity“ überhaupt keine Sicherheit ist, aber einige Leute verstecken immer noch gerne ihre WordPress-Sachen, um den Hackern zusätzliche Barrieren zu errichten.
Die wp-config
Datei bietet Ihnen eine Reihe von Optionen dafür, und wir werden diese in späteren Abschnitten über das Verschieben von Dingen und das Deaktivieren der Dateibearbeitung behandeln.
Deaktivieren der Datei-Editoren
WordPress hat eine praktische Funktion, mit der Sie Dateien in Designs und Plugins vom Admin-Dashboard aus bearbeiten können. Durch Bearbeiten wp-config.php
können Sie diese Datei-Editoren deaktivieren! Einige Leute deaktivieren sie gerne, um sich zu beruhigen.
Jetzt weiß ich, dass es ein Sicherheitsargument gibt, dass jemand, der Administratorzugriff auf Ihre Website hat – was für die Verwendung dieser Editoren erforderlich ist – ein Plugin hochladen und trotzdem tun kann, was er möchte. Die Aktivierung dieser Editoren bietet Hackern nicht mehr Macht, als sie bereits haben.
Obwohl die Sicherheit durch das Deaktivieren möglicherweise nicht wirklich verbessert wird, besteht der wahre Grund dafür darin, Personen, die tatsächlich als Administratoren autorisiert sind, daran zu hindern, sie zu verwenden. Wenn Sie eine Agentur sind, möchten Sie wahrscheinlich nicht, dass Ihre Kunden feststellen, dass sie alle ihre Themendateien bearbeiten können, oder?
Viele Hosts deaktivieren diese Funktion standardmäßig. Aber wenn Sie sie verschwinden lassen möchten, ist es so einfach wie das Hinzufügen von:
define( 'DISALLOW_FILE_EDIT', true );
Oder wenn Sie Ihr Dateisystem wirklich sperren möchten, gibt es DISALLOW_FILE_MODS
, das wir im nächsten Abschnitt behandeln werden.
Automatische Updates deaktivieren
Ob Sie sie lieben oder hassen, die automatischen Updates von WordPress haben einen positiven Einfluss auf das WordPress-Ökosystem und sind schwer zu ignorieren. Aber nicht jeder möchte, dass sich seine Software um sich selbst kümmert!
wp-config
gibt Ihnen also die Kontrolle über den automatischen Aktualisierungsprozess mit einem einfachen Satz selbsterklärender Konstanten, die Sie festlegen können:
# Disable all core updates: define( 'WP_AUTO_UPDATE_CORE', false ); # Enable all core updates, including minor and major: define( 'WP_AUTO_UPDATE_CORE', true ); # Enable core updates for minor releases (default): define( 'WP_AUTO_UPDATE_CORE', 'minor' );
Wenn Sie etwas Extremeres wollen, können Sie DISALLOW_FILE_MODS
:
define( 'DISALLOW_FILE_MODS', true );
Dies verhindert jedoch, dass WordPress irgendetwas im Zusammenhang mit Kern, Themen, Plugins oder Übersetzungen auf die Festplatte schreibt, und es deaktiviert E-Mail-Benachrichtigungen über kleinere Updates. Es wurde von einem Kernbeitragenden als „verrückt dumm zu verwenden, es sei denn, Sie wissen genau, was Sie tun“ beschrieben.
Etwas weniger extrem ist AUTOMATIC_UPDATER_DISABLED
. Auf diese Weise können Sie Plugins und Designs installieren, sie oder die Kernsoftware jedoch nicht aktualisieren. Es deaktiviert jedoch auch Übersetzungsaktualisierungen.
define( 'AUTOMATIC_UPDATER_DISABLED', true );
Es gibt eine detaillierte Anleitung zu all dem auf wordpress.org, einschließlich einiger anderer Optionen wie der Verwendung von Filtern für eine feinkörnigere Kontrolle.
Abschließend stelle ich fest, dass, wenn Ihre Website versioniert ist, es wahrscheinlich ist, dass WordPress Updates für Sie sowieso deaktiviert hat. Beispielsweise deaktiviert das Vorhandensein eines .git
-Verzeichnisses im Stammverzeichnis der Website (oder verschiedener anderer Dateien an verschiedenen Orten) automatische Updates, ohne dass Sie etwas zu wp-config
hinzufügen müssen.
HTTPS konfigurieren
Früher war die Konfiguration von HTTPS oft eine Herausforderung. Mit dem Aufkommen kostenloser, vertrauenswürdiger Sicherheitszertifikate von Orten wie LetsEncrypt und Cloudflare richten viele Hosts dies mit ein paar Klicks für Sie ein. Diese Einstellung sollte wahrscheinlich als veraltet angesehen werden, aber vielleicht brauchen Sie sie noch für etwas.
Die Konstante FORCE_SSL_ADMIN
weist WordPress an, immer SSL für die Anmeldeseiten und das WordPress-Dashboard zu verwenden. Dadurch wird sichergestellt, dass sichere Anmeldeinformationen und Cookies nicht unverschlüsselt gesendet werden können.
Aber wie ich schon sagte, ein gutes Hosting-Unternehmen wird die Einrichtung von HTTPS auf Ihrer Website sowieso einfach machen, also tun Sie es einfach.
Verhindern von externen HTTP-Anforderungen
Schließlich können Sie zur Sicherheit externe HTTP-Anforderungen blockieren. Das bedeutet, dass WordPress keine anderen Orte im Internet kontaktieren kann, um beispielsweise API-Aufrufe durchzuführen oder Updates herunterzuladen.
WordPress zu erlauben, externe Dienste über HTTP zu kontaktieren, ist im Allgemeinen eine gute Idee, da Sie damit Updates erhalten, Plugins und Designs installieren können und viele Plugins kaputt gehen, wenn Sie HTTP-Anfragen deaktivieren.
Aber der WordPress-Kern und viele Plugins und Themes senden „Telemetrie“ oder „Nutzungsdaten“ zurück an zentrale Server. Das kann gut sein – es hilft Plugin- und Theme-Entwicklern zu wissen, wer ihre Software wie verwendet. Wenn Sie jedoch eine Website mit besonders sensiblen Daten haben, möchten Sie dies möglicherweise deaktivieren. Und das können Sie tun mit:
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
Wenn Sie eine Zulassungsliste von Hosts haben möchten, die kontaktiert werden können, können Sie dies auch tun:
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org,*.github.com' );
Beachten Sie, dass die Liste der zugänglichen Hosts eine durch Kommas getrennte Liste ist und Platzhalter-Subdomains zulässig sind. Und Sie können überwachen, welche Hosts mit dem Plugin Log HTTP Requests kontaktiert werden.
Sachen bewegen
Nicht jede WordPress-Installation ist gleich. Einige Hosts oder Frameworks verschieben gerne Verzeichnisse aus Sicherheitsgründen oder um seitenspezifischen Code und Assets vom WordPress-Kern getrennt zu halten. Mein Artikel über die Verwendung von Git und Composer zur Verwaltung von WordPress behandelt einige Vorteile dieses Ansatzes.
Welche Optionen bietet Ihnen WordPress also für – in Ermangelung eines besseren Begriffs – „Zeugs bewegen“?
Ändern des Datenbankpräfixes
WordPress verwendet standardmäßig das Präfix des Datenbanktabellennamens wp_
. Dieses Präfix wird allen Datenbanktabellennamen hinzugefügt und wird auch an einigen anderen Stellen verwendet, beispielsweise in der Option <prefix>user_roles
in der Optionstabelle und in den Benutzermetaeinträgen <prefix>capabilities
.
Hacker oder Angreifer können das Standardpräfix bei einem Angriff verwenden und versuchen, Ihre Datenbanktabellen zu entdecken oder zu ändern. Einige Leute empfehlen daher, die Standardeinstellung zu ändern.
Mit der wp_config
Option $table_prefix
können Sie dies tun, und Sie sollten sie wahrscheinlich auf eine kurze, aber zufällige Zeichenfolge setzen, die mit einem Unterstrich versehen ist:
$table_prefix = 'b4F8az_';
Dadurch wird WordPress angewiesen, Tabellennamen wie b4F8az_posts
anstelle von wp_posts
zu verwenden.
Sie sollten keinen Code aktualisieren müssen, um dieser Änderung Rechnung zu tragen (es sei denn, dieser Code ist sehr schlecht geschrieben), aber wenn Sie dies auf einer bestehenden Site ändern, müssen Sie einige Aktualisierungen an Ihrer Datenbank vornehmen – und nicht nur umbenennen die Tische!
Einige Sicherheits-Plugins erledigen dies für Sie und es gibt ein Plugin, das dies auch kann. Wir empfehlen dringend, vorher eine Sicherungskopie Ihrer Datenbank zu erstellen, und beachten Sie, dass die Auswahl eines nicht standardmäßigen Tabellenpräfixes am besten bei der Installation von WordPress erfolgt, nicht wenn Sie es ändern, während Ihre Website in Bearbeitung ist.
Eine merkwürdige Anmerkung dazu ist, dass $table_prefix
eine Variable und keine Konstante ist. Es ist die einzige Variable, die in der Beispiel-Konfigurationsdatei definiert ist, die WordPress Ihnen gibt! Und wenn Sie immer noch neugierig sind: Ja, die wp config
-Befehle von WP-CLI erledigen das für Sie, ohne dass Sie es überhaupt wissen müssen!
Verschieben der Benutzer- und Usermeta-Tabellen
Ich habe das noch nie gesehen, und ich habe erst beim Schreiben dieses Artikels erfahren, dass es möglich ist, aber Sie können auch die Namen der Benutzer- und Benutzermeta-Tabellen vollständig ändern.
Ich denke, dies hilft, einen SQL-Injection-Angriff zu verhindern, der versucht, „SELECT * FROM wp_usermeta;“ auszuführen, aber ich freue mich, andere Gründe dafür zu hören.
In jedem Fall benötigen Sie die Konstanten CUSTOM_USER_TABLE
und CUSTOM_USER_META_TABLE
:
define( 'CUSTOM_USER_TABLE', $table_prefix.'my_users' ); define( 'CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta' );
Es gibt einige Vorsichtsmaßnahmen, die Sie kennen sollten, bevor Sie diese Konstanten verwenden. Überprüfen Sie die offiziellen Dokumente, bevor Sie diese Funktion verwenden. Und wie bei der Verwendung eines benutzerdefinierten Tabellenpräfixes ist dies definitiv am besten bei der Installation einer neuen Website zu tun, anstatt sie später zu ändern.
Verschieben Sie Inhalts-, Upload- und Plugin-Verzeichnisse
Es ist auch möglich, das gesamte wp-content
Verzeichnis, das uploads
-Verzeichnis und die themes
und plugins
-in-Verzeichnisse zu verschieben. Dinge zu beachten:
- In einigen dieser Fälle müssen Sie sowohl die URL als auch das Verzeichnis festlegen.
- Sie müssen darauf achten, je nach Bedarf vollständige Pfade oder relative Pfade zu verwenden.
- Keine dieser Einstellungen sollte einen abschließenden Schrägstrich haben.
Konsultieren Sie die offizielle Dokumentation für Details – ich werde das hier nicht alles wiederholen.
Beachten Sie schließlich, dass ein schlecht codiertes Plugin oder Design durcheinander geraten kann, wenn Sie diese ändern. Dies sollte niemals passieren, aber es lohnt sich, darüber Bescheid zu wissen.
Wenn Sie ein Plugin- oder Theme-Entwickler sind, ist es wichtig, daran zu denken, dass sich diese Pfade ändern können. Achten Sie also darauf, Pfade zu Verzeichnissen oder URLs nicht hart zu codieren. Nützliche Funktionen für Sie sind hier:
wp_upload_dir
plugins_url
plugin_dir_url
plugin_dir_path
get_stylesheet_directory
get_stylesheet_directory_uri
get_template_directory
– Beachten Sie, dass dies für ein untergeordnetes Design den Speicherort des übergeordneten Designs zurückgibt
get_template_directory_uri
Eine ausführlichere Liste solcher Funktionen finden Sie im Handbuch für WordPress-Entwickler.
Schließlich möchten Sie nicht nur Dateien innerhalb Ihrer WordPress-Installation verschieben, sondern auch Ihren wp-admin-Speicherort verschieben oder den Speicherort Ihrer Website ändern. Und wp-config.php
kann auch dabei helfen.
Inhaltsbezogene Einstellungen
WordPress ist schließlich ein Content-Management-System. Sie würden also einige der Konstanten erwarten, die Sie in wp-config.php
verwenden können, um Inhaltsoptionen zu steuern. Lassen Sie uns einen Blick darauf werfen und sehen, was wir tun können.
Website- und Dashboard-URLs ändern
Diese haben mich immer verwirrt.
Um die URL Ihrer Website festzulegen, müssen Sie die Konstante WP_HOME
verwenden, nicht die Konstante WP_SITEURL
.
Die Konstante WP_SITEURL
ändert die URL Ihrer Website nicht.
Verwirrt?
Die offizielle Beschreibung dessen, was WP_SITEURL
tut, ist „die Adresse, an der sich Ihre WordPress-Kerndateien befinden“. Dies ist auch verwirrend, da es sich um eine URL und nicht um ein Verzeichnis handelt.
Machen Sie mir dafür keine Vorwürfe, ich bin nur Ihr Reiseleiter für den Tag!
Das Festlegen WP_HOME
und WP_SITEURL
überschreibt die home
und siteurl
-Einträge in der Datenbanktabelle wp_options
. Also macht das zumindest Sinn.
// NOTE: These must not have trailing slashes define( 'WP_HOME', 'https://helfish.media' ); define( 'WP_SITEURL', 'https://hellfish.media/wordpress` );
Sie können diese Konstanten verwenden, nachdem Sie eine Website auf eine neue URL verschoben haben, um die Website zum Laufen zu bringen, während Sie die Datenbank ordnungsgemäß reparieren. Sie können sich sogar dafür entscheiden, sie danach an Ort und Stelle zu lassen.
Die WP_SITEURL
Einstellung kann auch verwendet werden, wenn Sie Ihre Kern-WordPress-Dateien in ein anderes Verzeichnis verschoben haben.
Die Verwendung dieser verhindert auch, dass ein oder zwei Datenbankabfragen ausgeführt werden, um die Werte aus der Optionstabelle abzurufen, sodass dies zu einem geringfügigen Leistungsgewinn führen kann. Wenn Sie jedoch Objekt-Caching durchführen, ist dieser Gewinn wahrscheinlich vernachlässigbar.
Es gibt einige weitere Details in den offiziellen Dokumenten und sogar einen vollständigen Support-Artikel zum Ändern der Website-URL. Außerdem enthält dieser Artikel die obskure RELOCATE
-Konstante für wp-config.php
, von der ich vor der Recherche zu diesem Artikel noch nie gehört hatte.
Beachten Sie schließlich beim Verschieben von Websites, dass dies nicht die einzige Sache ist, die Sie ändern müssen. Ein vollständiges Suchen und Ersetzen in der Datenbank für die URL-Zeichenfolgen wird empfohlen.
Beitragseinstellungen
Es gibt ein paar verschiedene Einstellungen, die Sie ändern können, wenn es um Beiträge geht. Die meisten davon befassen sich entweder mit Post-Revisionen oder der Funktion zum automatischen Speichern.
Post-Revisionen
Das Standardverhalten von WordPress besteht darin, alle an Beiträgen und Seiten vorgenommenen Änderungen zu speichern. Dies hat den Vorteil, dass es einfach ist, zu früheren Versionen zurückzukehren. Die Nachteile bestehen darin, dass all diese Revisionen Speicherplatz in der Datenbank beanspruchen und die Leistung der Site beeinträchtigen können, indem sie Datenbankabfragen verlangsamen.
Es ist möglich, Post-Revisionen vollständig zu deaktivieren, indem du den Wert WP_POST_REVISIONS
in deiner wp-config.php
Datei änderst. Es ist standardmäßig wahr. Um Revisionen zu deaktivieren, können Sie sie stattdessen auf false setzen:
define( 'WP_POST_REVISIONS', false );:
Einige Hosts, einschließlich WP Engine, deaktivieren Post-Revisionen standardmäßig. Ich empfehle, sich bei Ihrem Hosting-Provider zu erkundigen, bevor Sie Änderungen vornehmen. Dies ist von Host zu Host unterschiedlich, aber wenn Sie mit WP Engine arbeiten, können Sie Revisionen nicht über wp-config
aktivieren, da diese auf Serverebene überschrieben werden.
Wenn Ihr Host dies kontrolliert und Sie versuchen, es zu ändern, werden Sie nicht unbedingt etwas kaputt machen, aber Sie könnten Ihre Zeit verschwenden.
Wenn Sie besorgt sind , dass Post-Revisionen Datenbankabfragen verlangsamen, könnte es eine bessere Option sein, die Anzahl der Revisionen zu begrenzen, die WordPress speichert. Dies wird durch die Konstante WP_POST_REVISIONS
gesteuert, die Sie auf die maximale Anzahl von Revisionen setzen können, die Sie behalten möchten:
define( 'WP_POST_REVISIONS', 5 );
Ändern des Autosave-Intervalls
Sie können auch verringern, wie oft die automatische Speicherung ausgelöst wird. Dies ist standardmäßig alle 60 Sekunden, aber Sie können es nach Belieben ändern. Wenn Sie paranoid sind, sollten Sie dies stattdessen auf 20 oder 30 Sekunden einstellen.
Es ist wichtig zu bedenken, wie lange eine automatische Speicherung dauert. Sie möchten nicht, dass sie sich überlappen, indem Sie sie zu häufig machen, setzen Sie diesen Wert also nicht auf beispielsweise eine Sekunde. Es ist nicht sehr wahrscheinlich, dass das automatische Speichern länger als die Standardeinstellung von 60 Sekunden dauert, aber Sie können das Intervall erhöhen, wenn Sie Anfragen speichern möchten:
define( 'AUTOSAVE_INTERVAL', 120 ); // Seconds
Einpacken
In wp-config
viel Potenzial, das nur darauf wartet, freigeschaltet zu werden. Ich hoffe, diese Tour hat dazu beigetragen, nur einige der Möglichkeiten hervorzuheben. In einem zukünftigen Artikel werde ich mich mit weiteren erweiterten Funktionen von wp-config
, einschließlich Multisite-Installationen und Debugging. Ich werde mich auch mit der Leistung befassen, einschließlich der Anpassung von Speichergrenzen, CRON-Problemen und Umgebungstypen.
Zweifellos schlummern in der offiziellen Dokumentation noch weitere Schätze, die darauf warten, entdeckt zu werden. Welche Tipps haben Sie für die Verwendung von wp-config
gefunden? Lass es mich in den Kommentaren wissen.