wp-config.php | Sicherheits- und Leistungsbooster

Wenn du mit WordPress deine Website erstellst, wirst du früher oder später über die Datei „wp-config.php“ stolpern. Entweder gleich zu Beginn bei der Initialisierung deiner Seite oder sobald du Einstellungen treffen möchtest, welche über diese Datei gesteuert werden können. Die wp-config.php fungiert quasi als Einstellungsliste und ist die Brücke zwischen deinem Dateisystem und der Datenbank.

Folgend einige Einstellungsmöglichkeiten, die dir helfen, deine Website bestens zu konfigurieren. Du wirst dabei sehen, viele Konstanten sind allgemein nützlich und verbessern die Sicherheit oder die Leistung deiner Installation. Andere richten sich vermehrt an Entwickler. Wie die ideale Strukturierung des Artikels ausfallen sollte, ist noch nicht vollends festgelegt, denn viele wp-config.php Einstellungen und Anwendungsbeispiele tangieren mehre Bereiche.

Da es sich bei der Datei um eine *.php Datei handelt, startet sie mit <?php und Kommentare werden über // Kommentar oder mittels /* Kommentar */ eingefügt.

Sicherheit

In der Datei befinden sich Informationen zum Nutzer und Namen der Datenbank, wodurch sie eine potenzielle Schwachstelle zur Kompromittierung deines kompletten Systems darstellt.

Alternativen Speicherort festlegen

Dein WordPress sucht im Hauptordner (web root) nach der Existenz der wp-config Datei. Wird sie an dieser Stelle nicht gefunden, wird automatisch hierarchisch eine Stufe weiter oben geschaut. Diese Funktionsweise kannst du nutzen und die Datei eine Stufe weiter oben ablegen. Dadurch kann niemand deine Konfiguration ändern, der nicht über SSH oder FTP-Zugänge verfügt. Legst du deine „richtige wp-config.php“ an diese Stelle, benötigst du eine weitere, die auf diese verweist.

/* WordPress web-root wp-config.php */

define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . '../pfad/zur/wp-config.php'); // Ändere den Pfad auf die zu verwendende Datei

Datenbank

Da die wp-config eine direkte Schnittstelle zu deiner Datenbank darstellt, kannst du in dem Zusammenhang überlegen, den standardisierten Präfix wp_table abzuändern. Dies erschwert den Zugang für Hacker, falls eine generelle Schwachstelle auftritt. Dieser Schritt nur bei neuen Seiten ratsam und sollte nicht nachträglich verändert werden.

/* Angabe des DB-Tabellen-Präfix */

$table_prefix = 'dwp75_';

WP_ALLOW_REPAIR erlaubt es deinem WordPress, beschädigte Tabellen zu reparieren und zu optimieren. Diese Optimierung wurde mit Version 2.9 integriert.

Die zweite Anweisung (DO_NOT_UPGRADE_GLOBAL_TABLES) richtet sich an Websites mit großen globalen Tabellen. Insbesondere Benutzer und Benutzermeta Informationen, wie sie beispielsweise bei bbPress vorkommen. Mit dem Wert „True“ verhinderst du, dass diese Tabellen während einer Aktualisierung verändert werden. Solche Änderungen können bei vielen Einträgen sehr lange dauern, wodurch die Verhinderung sinnvoll sein kann.

/* Einstellungen für die Datenbank */

define( 'WP_ALLOW_REPAIR', true ); // Erlaubt es deinem WordPress die Datenbank zu reparieren
define( 'DO_NOT_UPGRADE_GLOBAL_TABLES', true ); // Keine Aktualisierung in globalen Tabellen (bsp.: Nutzer)

WordPress & Benutzerrechte

An den Benutzerrechten deiner Installation muss zumeist etwas verändert werden, wenn eine Fehlermeldung erscheint. In manchen Fällen fragt dein WordPress nach den FTP-Referenzen: „WordPress Asking for FTP Credentials“. FS_METHOD besagt, dass Nutzer Daten editieren und installieren dürfen. Als Methode kannst du hier auf direct, ssh2, ftpext und ftpsocket zurückgreifen.

/* WordPress darf Daten ändern */

define( 'FS_METHOD', 'direct' ); // Wie soll WordPress in das Dateisystem schreiben?
define( 'FS_CHMOD_DIR', ( 0755 & ~ umask() ) ); // Verzeichnisse bekommen Benutzerrechte 755
define( 'FS_CHMOD_FILE', ( 0644 & ~ umask() ) ); // Dateien bekommen Benutzerrechte 644

Pfade zu Verzeichnissen

Der Standardordner /wp-content/uploads deiner WordPress-Installation legt temporäre Verzeichnisse für Dateien an. Dieses temporäre Verzeichnis kannst du anpassen. Diese Einstellung findet für gewöhnlich in der php.ini statt.

/* Downloadverzeichnis für temporäre Downloads vor dem Löschen */

define( 'WP_TEMP_DIR', '/wp-content/temps/' ); // Der Pfad zum Temp-Ordner

Ebenso wünschen sich Plugins und Template eine Pfadangabe, diese kannst du ebenfalls individuell verändern. Deinen Ordner wp-content wirst du sicherlich gut kennen, denn hier liegen all deine eigenen Inhalte. Mit WP_CONTENT_URL kannst du die URL nach deinen Wünschen anpassen. Mit WP_CONTENT_DIR verweist du auf das wp-content Verzeichnis, daher fehlt im Pfad der „/“, denn mit ABSPATH ist der absolute Pfad zu deinem WordPress Verzeichnis gemeint: Absolute Path to the WordPress Directory. Die beiden Befehle wirken sehr ähnlich, die URL wird beim Auslesen verwendet und das Verzeichnis beim Schreiben.

Die installierbaren und Must-Use Template und Stylesheet Pfade lassen sich ganz ähnlich angeben: WP_PLUGIN_URL & WP_PLUGIN_DIR sowie WPMU_PLUGIN_URL & WPMU_PLUGIN_DIR und WPMU_PLUGIN_URL & WPMU_PLUGIN_DIR

Die PLUGINDIR Angabe und die dazugehörige Funktion plugin_dir_path zeigen auf den Verzeichnispfad des Dateisystems mit trailing slash.

/* Pfade deiner: Inhalte, Plugins, Templates */

define( 'WP_CONTENT_URL', get_option( 'siteurl' ) . '/wp-content' ); // URL zu wp-content | ohne trailing slash
define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // Das wp-content Verzeichnis | ohne trailing slash
define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // URL zum Plugin-Verzeichnis
define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // Pfad zum Plugin-Verzeichnis | ohne trailing slash
define( 'PLUGINDIR', 'wp-content/plugins' ); // Relativ zum ABSPATH | Rueckwaertskompatabilität
define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/mu-plugins' ); // URL zum Plugin-Verzeichnis
define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // Pfad zum Plugin-Verzeichnis | ohne trailing slash
define( 'MUPLUGINDIR', 'wp-content/mu-plugins' ); // Relativ zum ABSPATH | Rueckwaertskompatabilität
define( 'TEMPLATEPATH', get_template_directory() ); // Angabe des Template-Verzeichnisses
define( 'STYLESHEETPATH', get_stylesheet_directory() ); // Angabe des Stylesheet-Verzeichnisses

SSL

Einstellungen zum Netzwerkprotokoll kannst du vornehmen und angeben, inwiefern dein Backend vom Secure Sockets Layer geschützt sein soll. Da allerdings lediglich ein verschlüsselter Login, wie dies FORCE_SSL_LOGIN einstellt, unpassend ist, wurde diese Funktion mit Version 4.4.0 entwertet.[1]WordPress Stackexchange Ob die Funktionalität an dieser Stelle eingestellt werden muss, weiß ich nicht genau. Ich würde allerdings die .htaccess Datei prädestinieren.

/* SSL-Einstellungen */

define( 'FORCE_SSL_LOGIN', true ); // SSL im kompletten Login-Prozess
define( 'FORCE_SSL_ADMIN', true ); // SSL wird im kompletten WP Admin Bereich erzwungen

Externe Anfragen

Bereits seit Version 2.8 ermöglicht WordPress die Definition von Konstanten, um den Zugriff auf bestimmte Hosts hinter einem Proxy-Server zu steuern. Wird WP_HTTP_BLOCK_EXTERNAL auf true gesetzt, werden externe Anfragen blockiert. Mit WP_ACCESSIBLE_HOSTS definierst du im Anschluss eine Whitelist. Was du hier einträgst, bleibt dir überlassen, aber der Zugriff auf die WordPress API (api.wordpress.org) sollte zur Funktionalität der Kerndateien und Plugins dabei sein. Mit Komma trennst du mehrere Hosts voneinander ab

/* Externe Anfragen */

define( 'WP_HTTP_BLOCK_EXTERNAL', true ); // Externe Anfragen werden geblockt
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org' ); // Whitelist | diese Anfragen dürfen ausgeführt werden

Daten modifizieren

Eine Fehlermeldung, die bei der Verwendung von GeneratePress vorkommen kann, lautet: DISALLOW_FILE_EDIT is defined. Your should also disallow PHP execution in GP Hooks.[2]GeneratePress Docs: Disallow PHP Execution Einige Sicherheitsplugins aktivieren diese Funktion. Die Deaktivierung der Dateibearbeitung verhindert, dass sich Fremde Zugriff auf dein Dashboard verschaffen, hier PHP ausführen und womöglich Zugriff auf deinen Server erhalten.

Wird DISALLOW_FILE_MODS auf true gestellt, unterbricht dies den Aktualisierungsmechanismus. Diese Einstellung ist daher eher für zentrasslgesteuerte WordPress-Instanzen sinnvoll.

Sobald du die interne Bildbearbeitung verwendest, speichert dein WordPress es in verschiedenen Auflösungen. Wenn du aber nur die endgültige Fassung benötigst, können diese entfernt werden, indem du den Wert der IMAGE_EDIT_OVERWRITE-Konstante auf „true“ setzt.

Infolgedessen werden die früheren Bilddateien durch die neuen überschrieben, wenn Sie ein Bild bearbeiten, und nur der letzte Satz wird im Ordner wp-content gespeichert.

/* Daten modifizieren */

define( 'DISALLOW_FILE_EDIT', true ); // WordPress Dateibearbeitung deaktivieren
define( 'DISALLOW_FILE_MODS', true ); // Nutzer fürfen nichts aktualisieren: keinen Core, keine Plugins, keine Themes
define( 'IMAGE_EDIT_OVERWRITE', true ); // Bildbearbeitungen werden gelöscht

WordPress Aktualisierung

Um genau zu wissen, wann Dinge auf deinem WordPress geschehen, kannst du die einzelnen Aktualisierungsvarianten einstellen. AUTOMATIC_UPDATER_DISABLED‘ deaktiviert alle automatischen Aktualisierungen und mit der Konstante false bei WP_AUTO_UPDATE_CORE deaktivierst du lediglich Core-Updates. Mit minor werden kleinere Aktualisierungen erlaubt, also Aktualisierungen an dritter Steller (derzeit 6.1.1). [3]WordPress Support: Konfiguration von automatischen Hintergrundaktualisierungen

/* Anpassung der WordPress Aktualisierungen */

define( 'AUTOMATIC_UPDATER_DISABLED', true ); // Alle automatischen Aktualisierungen werden deaktiviert
define( 'WP_AUTO_UPDATE_CORE', false ); // Nur Core-Updates werden deaktiviert
define( 'WP_AUTO_UPDATE_CORE', 'minor' ); // Nur minor Updates werden aktiviert

Sprachen

Du kannst dein WordPress in unterschiedlichen Sprachen betreiben. Mit der Einstellung WPLANG kann ein englisches WordPress eine andere Sprache erlernen, im vorliegenden Fall lernt das CMS deutsch. Damit dein System im Anschluss tatsächlich in der angepassten Sprache verwendet werden kann, benötigst du allerdings auch die passenden Sprachdateien. Der Ordner für die Sprachdateien liegt unter wp-content/languages oder wie im Beispiel unter wordpress/languages, denn du kannst den Pfad zum Ordner mit WP_LANG_DIR selbst bestimmen.

/* Sprachänderungen */

define( 'WPLANG', 'de_DE' ); // Einstellen der verwendeten Sprachfassung
define( 'WP_LANG_DIR', dirname(__FILE__) . 'wordpress/languages' ); // Pfad für die Sprachdateien

Leistungsoptimierung für deinWP

Speichereinstellungen

PHP reserviert einen Teil des Arbeitsspeichers für seine eigenen Skripte. Gäbe es kein Limit, können fehlerhafte Befehle deinen Server an die Grenze bringen und die Leistung negativ beeinflussen. Je größer deine Website, desto größer darf der Wert ausfallen. 128 MB sollte für eine normale Installation genügen. Wenn du WooCommerce nutzt, kann es sein, dass 256 MB sinnvoll sind. Häufig lassen sich solche Einstellungen allerdings auch bei deinem Hosting treffen.

/* PHP Speicher Begrenzung */

define( 'WP_MEMORY_LIMIT', '128M' ); // PHP Speicher Begrenzung auf 128 MB

Die zweite Angabe verändert das Limit für deine Administrationsübersicht.

/* Admin-Side Memory Begrenzung */

define( 'WP_MAX_MEMORY_LIMIT', '256M' );  // Erhöht die Admin-Side Memory Begrenzung

URL-Einstellungen

An dieser Stelle wird die WordPress und Website-Adresse eingestellt. Diese Einstellung triffst du beispielsweise unter Einstellungen –> Allgemein. Meist sind beide URLs identisch.

Die Home-URL (Website Adresse; WP_HOME) bezeichnet die Adresse deiner WordPress Webseite, die von Außen sichtbar ist.

Die Site-URL (WordPress Adresse; WP_SITEURL) ist nur für dich spannend, denn hier wird angegeben, wo sich die Dateien deiner Website befinden. Häufig kannst du diese Einstellungen bei deinem Domainanbieter vornehmen, denn hier gibst du den Pfad der Domain an. Das Gleiche würde an der Stelle passieren:

  • Home-URL ist beispielsweise https://www.deinwp.de
  • Die Site-URL allerdings https://www.deinwp.de/blog/

Die Angabe der URLs kann explizit oder indirekt geschehen.

/* URL-Einstelliungen */

define( 'WP_HOME', 'https://www.deinedimain.tld' ); // Adresse von Außen sichtbar
define( 'WP_SITEURL', 'https://www.deinedomain.tld' ); // Adresse zur internen Verwendung
/* dynamische URL-Einstellungen */

define( 'WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] ); // Adresse von Außen sichtbar
define( 'WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] ); // Adresse zur internen Verwendung

Der Umzug

Setzt du diese Konstante, überschreibt dein WordPress die Site-URL (siteurl) mit dem Wert $_SERVER[‚HTTP_HOST‘] und speichert sie in der Datenbank. Kann bei einer Migration auf einen anderen Host spannend sein, aber daher lohnt sich der Eintrag der dynamischen URL.

/* Temporärer Umzug */

define( 'RELOCATE', true );  // Wird nach dem Login entfernt

Standard-Theme

Diese Einstellung ist spannend, wenn du keinen Zugriff auf das Backend hast und vermutest, dass es an fehlerhaften Theme-Einstellungen liegen könnte. Mit WP_DEFAULT_THEME kannst du das derzeit verwendete Theme verändern. Der Name twentytwentythree dient hier als Platzhalter für den Ordnernamen deines Themes.

/* Standard-Theme einstellen */

define( 'WP_DEFAULT_THEME', 'twentytwentythree' ); // Standardtheme: twentytwentythree

Besonders bei der Nutzung eines Child-Themes lohnt es sich, den kompletten Pfad anzugeben.

/* Theme-Pfad angeben */

define( 'TEMPLATEPATH', '/pfad/zum/theme/ordner/name-des-eltern-themes'); // Pfadangabe zum Theme

Login Cookies

Wenn du beim Login eine Cookie-Fehlermeldung erhältst, musst du an dieser Stelle aktiv werden. Verwende die Konstante COOKIE_DOMAIN nur, wenn Cookies von einer einzelnen Domain für alle Seiten im Netzwerk bereitgestellt werden sollen. Wenn du keine Konstante angibst oder auf einen leeren Wert gesetzt wird, gehören Cookies zu angeforderten Domäne. Wichtig ist dies besonders bei Multisite-/Netzwerkumgebungen, denn die einzelnen Domänen (ja deine Domainnamen) sollen ja getrennt arbeiten.

Wähle aus den untenstehenden Varianten eine für dich passende aus.

/* Cookie Domain für Login Cookies */

define( 'COOKIE_DOMAIN', '.domainname.tld' ); // Domain und alle subdomains
define( 'COOKIE_DOMAIN', 'domainname.tld' ); // nur Hauptdomain
define( 'COOKIE_DOMAIN', 'www.domainname.tld' ); // nur Subdomain

Als alternative Angabe kannst du auch folgendes verwenden.

/* Konstante für Cookie Domain setzen */

define('COOKIE_DOMAIN', false);
define( ‘COOKIE_DOMAIN’, $_SERVER[ ‘HTTP_HOST’ ] );

Möchtest du noch detailliertere Angaben, besonders zu den genauen Pfaden angeben, geschieht dies über folgende Kommandos. Wie du siehst, wird in allen Bereichen jeweils COOKIE_DOMAIN gesetzt, also nur eine Variante in deine wp-config.php schreiben.

/* Cookie-Pfade setzen */

define('COOKIE_DOMAIN', 'domainname.tld'); // Dein Domainname ohne Punkt und www
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
define( 'COOKIEPATH',  $_SERVER['HTTP_HOST'] . '/' ); // explizit einstellen
define( 'PLUGINS_COOKIE_PATH', preg_replace( '|https?://[^/]+|i', '', WP_PLUGIN_URL ) );
define( 'SITECOOKIEPATH', $_SERVER['HTTP_HOST'] . '/' ); // explizit einstellen

Du kannst sogar die Namen deiner Cookies selbst bestimmen. Der mittlere Teil, also beispielsweise wordpressuser_, kannst du nach deinem Belieben umbenennen.

/* Cookie Namen */

define( 'USER_COOKIE', 'wordpressuser_' . COOKIEHASH ); 
define( 'PASS_COOKIE', 'wordpresspass_' . COOKIEHASH );
define( 'AUTH_COOKIE', 'wordpress_' . COOKIEHASH );
define( 'SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH );
define( 'LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH );
define( 'RECOVERY_MODE_COOKIE', 'wordpress_rec_' . COOKIEHASH );

Admin-Verzeichnis

Über /wp-admin gelangst du standardmäßig auf die Admin-Seite und über /wp-login.php auf die Anmeldeseite. Aus Gründen der erhöhten Sicherheit lassen sich diese beiden URLs anpassen.[4]Saurabh Dhariwal vpm 17. April 2017: Change Admin URL in WordPress

/* Wo soll sich dein Admin-Verzeichnis befinden? */

define('WP_ADMIN_DIR', 'name-des-ordners'); // Dein neuer Admin-Pfad
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR); // benötigst du, damit Cookies abgespeichert werden

Jetzt bist du allerdings noch nicht fertig, denn du musst noch die function.php im aktivierten Theme besuchen und folgende Informationen angeben.

/* Änderung des Admin-Pfads */

add_filter('site_url', 'wpadmin_filter', 10, 3); 
function wpadmin_filter( $url, $path, $orig_scheme ) { 
$old = array( "/(wp-admin)/"); 
$admin_dir = WP_ADMIN_DIR; 
$new = array($admin_dir); 
return preg_replace( $old, $new, $url, 1); 
}

Und nun folgt noch eine Regel für deine .htaccess Datei.

# neuer Admin-Pfad

RewriteRule ^name-des-ordners/(.*) wp-admin/$1?%{QUERY_STRING} [L]

Anzahl von Revisionen

Revisionen sind ein tolles Hilfsmittel für deine produktive Arbeit. Allerdings sind diese standardmäßig in ihrer Anzahl (kaum) begrenzt. Dies lässt sich mit der Angabe der Anzahl in nur einer Zeile beheben. Möchtest du mehr über WordPress-Revisionen erfahren, dann lies dir unseren Artikel durch. Anstatt einer Zahl kannst du auch die Anweisung false verwenden, dann werden keine Änderungsprotokolle gespeichert.

/* Anzahl an Revisionen verändern */

define( 'WP_POST_REVISIONS', 15 ); //  Stelle die Anzahl der Revisionen der Beiträge auf 15

Zusätzlich kannst du die Zeit bestimmen, in der dein WordPress automatisch abspeichern soll. Die Angabe des AUTOSAVE_INTERVAL geschieht in Sekunden.

/* Interval der automatischen Speicherung */

define( 'AUTOSAVE_INTERVAL', 180 ); //  Post-Revisionen werden aller 180 Sekunden gespeichert

Debug

Steht in deiner Anweisung true, aktivierst du die Funktion, mit false deaktivierst du.[5]WordPress.org: Debugging in WordPress

WP_DEBUG aktiviert das interne debug System von WordPress. Darüber erfährst du detaillierte Informationen zu etwaigen Fehlern auf deiner Website. Mit diesen Informationen kannst du deinem Web-Partner helfen. WP_DEBUG_LOG schreibt eine Datei, die du standardmäßig unter /wp-content/debug.log findest. In Testumgebungen und um den Fehler schnell zu finden, kannst du WP_DEBUG_DISPLAY aktivieren, allerdings sehen diese Meldungen auch deine Nutzer. WP_LOCAL_DEV arbeitet mit dem WP Local Dev Environment Plugin zusammen und kann externe Datenabfragen beeinflussen, stellt allerdings keine WordPress-Core-Konstante dar. [6]Quelle SCRIPT_DEBUG ist notwendig, wenn du JS oder CSS-Dateien des Cores änderst.

/* WordPress Debug */

define( 'WP_DEBUG', true ); // Modus an/aus
define( 'WP_DEBUG_LOG', true ); // Fehlerprotokollierung in einer Datei
define( 'WP_DEBUG_DISPLAY', true ); // Anzeige von Fehlern und Warnungen
@ini_set( 'display_errors', 0 );
define( 'WP_LOCAL_DEV', true ); // Aktivierung einer lokalen Entwicklung
define( 'SCRIPT_DEBUG', true ); // Nutze Entwicklungsversionen der Core JS und CSS Dateien

Fehler betrachten: Die Log-Datei findest du im /wp-content/ Ordner deiner Website. In diesen gelangst du mittels FTP-Programm.

Deinen Prozess zur Fehlerbereinigung kannst du mit folgenden Einstellungen weiter optimieren. Stellst du die Konstante von CONCATENATE_SCRIPTS auf false. Zwingst du dein WordPress alle Skripte individuell zu laden. Dadurch beeinflussen sich die Scripte nicht gegenseitig und du kannst sehen, ob eine bestimmte Einstellung Fehler verursacht. SCRIPT_DEBUG verwendet keine minimierten Skripte, wodurch deine Übersicht gewinnt.

Die SAVEQUERIES-Definition speichert Datenbankabfragen in einem Array. Zur Analyse deiner Anfragen, kann es helfen, wenn du diese Felder anzeigst. Die als wahr definierte Konstante bewirkt, dass jede Abfrage gespeichert wird, wie lange die Ausführung dieser Abfrage gedauert hat und welche Funktion sie aufgerufen hat.

COMPRESS wird passend als Minimierung und nicht als Kompression oder Verdichtung übersetzt. So lassen sich Skripte und CSS-Dateien mittel COMPRESS_SCRIPTS beziehungsweise COMPRESS_CSS und der Konstante wahr minimieren. ENFORCE_GZIP zwingt dem System die Minimierung mittel gzip auf.

/* Debug von Scripten und Stylings */

define( 'CONCATENATE_SCRIPTS', false ); // WordPress-Skripte werden separat eingebunden
define( 'SCRIPT_DEBUG', true ); // Verwendet nicht minimierte Skripte
define( 'SAVEQUERIES', true ); // Erfordert die Analyse des globalen $wpdb-Objekts
define( 'COMPRESS_SCRIPTS', true ); // (De)Aktiviert die Minimierung von Skripten 
define( 'COMPRESS_CSS', true ); // (De)Aktiviert die Minimierung von CSS 
define( 'ENFORCE_GZIP', true ); // Aktivierung der GZIP-Minimierung

Cron

Cronjobs ermöglichen das zeitbasierte Ausführen von Prozessen. Eine Deaktivierung der internen Jobs kann Fehler beheben und die Leistung deiner Seite erhöhen. Anstatt MINUTE_IN_SECONDS gibst du eine Zahl an.

/* Einstellungen der Cronjobs */

define( 'DISABLE_WP_CRON', true ); // Deaktivierung der WP Crons Disable WP cron zugunsten des Server-Cron
define( 'ALTERNATE_WP_CRON', true ); // Alternative Methode zum Auslösen der Cronjobs als Hintergrundanwendung, wenn diese vom Nutzer ausgelöst werden
define( 'WP_CRON_LOCK_TIMEOUT', MINUTE_IN_SECONDS ); // Cron-Läufe auf ein bestimmtes Intervall beschränken

Papierkorb

Du kannst die Zeit, in der dein Papierkorb gelöscht wird, verändern. Einstellbar ist EMPTY_TRASH_DAYS in Tagen. Wenn du möchtest, dann kannst du den Medieninhalten ebenfalls die Papierkorb-Funktionalität ermöglichen. Standardmäßig werden gelöschte Medien, direkt entfernt.

/* Papierkorb */

define( 'EMPTY_TRASH_DAYS', 30 ); // Nach wie vielen Tagen soll der Papierkorb gelöscht werden?
define( 'MEDIA_TRASH', false ); // Dürfen Mediedatein die Papierkorb-Funktionalität nutzen?

Einstellungen für Entwickler

Entwicklertools

Setzt du die Konstante SHORTINIT auf true, werden viele deiner WordPress Funktionen deaktiviert. Die Initialisierung wird auf ein Minimum reduziert. Besonders interessant, wenn du WordPress als Backend oder Framework verwendest oder zur Überprüfung von Fehlern. Mit WP_USE_THEMES bestimmst du, ob template-loader.php verwendet wird. Der Boot-Vorgang von WordPress nimmt folgenden Weg:

Die Boot-Sequenz wird in wp-blog-header.php gestartet

  1. lädt Plugins
  2. parst die URL
  3. führt Post-Abfrage auf Basis der URL aus
  4. ruft Theme auf

Möchtest du das URL-Parsing verwenden, aber nicht mit dem Theme anzeigen, kannst du den Wert auf false setzen.

/* Entwicklertools */

define( 'SHORTINIT', true ); // Deaktivierung vieler WordPress Funktionen
define( 'WP_USE_THEMES', true ); // Soll dein WordPress Themes nutzen?

Fehlerbehandlung

Mit WordPress 5.1 wurde das „fatal error handling“ eingeführt, manchmal als „White Screen of Death“ (WSOD) Schutz bezeichnet. Mittels WP_SANDBOX_SCRAPING schaltest du diesen Schutz aus und es werden keine E-Mails gesendet. Meist nur in lokalen Installationen und Entwicklungsumgebungen sinnvoll.

Wird ein fataler Fehler auf deiner Seite ausgelöst, erhält die unter RECOVERY_MODE_EMAIL hinterlegte E-Mail-Adresse eine Nachricht.

/* Fehlerbehandlung (fatal error handling) */

define( 'WP_SANDBOX_SCRAPING', true ); // WSOD Schutz (de)aktivieren
define( 'RECOVERY_MODE_EMAIL', 'info@deinedomain.tld' ); // Wiederherstellungs E-Mail
define( 'WP_START_TIMESTAMP', microtime( true ) ); // Anpassung der WordPress Startzeit

wp-config.php Beispiel

Alle Einträge innerhalb der wp-config.php in der Übersicht. Die Kommentare sind hier in Englisch gehalten, damit dieser Code allgemeingültig kopiert werden kann.

<?php 
/* PHP Speicher Begrenzung */

define( 'WP_MEMORY_LIMIT', '128M' ); // setup memory limit

/* Admin-Side Memory Begrenzung */

define( 'WP_MAX_MEMORY_LIMIT', '256M' ); // Increase admin-side memory limit.

/* Einstellungen für die Datenbank */

define( 'WP_ALLOW_REPAIR', true ); // Allow WordPress to automatically repair your database
define( 'DO_NOT_UPGRADE_GLOBAL_TABLES', true ); // Don't make database upgrades on global tables

/* Explicitely setting url */

define( 'WP_HOME', 'https://www.deinwp.de' ); // Address visible from outside
define( 'WP_SITEURL', 'https://www.deinwp.de' ); // Address for internal use

/* Set url to whatever */

define( 'WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] ); // Adresse von Außen sichtbar
define( 'WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] ); // Adresse zur internen Verwendung

/* Temporary for causing a site to relocate */

define( 'RELOCATE', true );  // Remove after login

/* Set default theme */

define( 'WP_DEFAULT_THEME', 'twentytwentythree' ); // set standard theme to twentytwentythree

/* set theme path */

define( 'TEMPLATEPATH', '/pfad/zum/theme/ordner/name-des-eltern-themes'); // themepath

/* Allow WordPress to update files */

define( 'FS_METHOD', 'direct' ); // How should WordPress write to the file system?
define( 'FS_CHMOD_DIR', ( 0755 & ~ umask() ) ); // change permissions of directories
define( 'FS_CHMOD_FILE', ( 0644 & ~ umask() ) ); // change permissions of files

/* Set the directory files should be downloaded to before they are moved */

define( 'WP_TEMP_DIR', '/wp-content/temps/' ); // your path to the temp directory

/* paths: content, plugin, template */

define( 'WP_CONTENT_URL', get_option( 'siteurl' ) . '/wp-content' ); // URL to wp-content | without a trailing slash
define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // The wp-content directory | without a trailing slash
define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // URL to plugin directory
define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // Path to plugin directory | without a trailing slash
define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH | backwards compatibility
define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/mu-plugins' ); // URL to plugin directory
define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // Path to plugin directory | without a trailing slash
define( 'MUPLUGINDIR', 'wp-content/mu-plugins' ); // Relative to ABSPATH | backwards compatibility
define( 'TEMPLATEPATH', get_template_directory() ); // Specification of the template directory
define( 'STYLESHEETPATH', get_stylesheet_directory() ); // Specification of the style sheet directory

/* Set cookie domain for login cookies */

define( 'COOKIE_DOMAIN', '.domainname.tld' ); // Domain and all subdomains
define( 'COOKIE_DOMAIN', 'domainname.tld' ); // only root domain
define( 'COOKIE_DOMAIN', 'www.domainname.tld' ); // only subdomain

/* Cookie-Path */

define('COOKIE_DOMAIN', 'domainname.tld'); // Your domain name without a dot and www
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
define( 'COOKIEPATH',  $_SERVER['HTTP_HOST'] . '/' ); // set explicitly
define( 'PLUGINS_COOKIE_PATH', preg_replace( '|https?://[^/]+|i', '', WP_PLUGIN_URL ) );
define( 'SITECOOKIEPATH', $_SERVER['HTTP_HOST'] . '/' ); // set explicitly

/* Cookie names */

define( 'USER_COOKIE', 'wordpressuser_' . COOKIEHASH ); 
define( 'PASS_COOKIE', 'wordpresspass_' . COOKIEHASH );
define( 'AUTH_COOKIE', 'wordpress_' . COOKIEHASH );
define( 'SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH );
define( 'LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH );
define( 'RECOVERY_MODE_COOKIE', 'wordpress_rec_' . COOKIEHASH );

/* Admin Path */

define('WP_ADMIN_DIR', 'name-des-ordners'); // set new admin path
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR); // you need for cookies to be saved

/* Set post revisions */

define( 'WP_POST_REVISIONS', 25 ); // set post revisions to 25

/* Autosave interval of post revisions in seconds */

define( 'AUTOSAVE_INTERVAL', 180 ); //  set up to 180 seconds

/* WordPress debug on and off */

define( 'WP_DEBUG', true ); // Modus on/off
define( 'WP_DEBUG_LOG', true ); // Error logging in a file
define( 'WP_DEBUG_DISPLAY', true ); // Display of errors and warnings
@ini_set( 'display_errors', 0 );
define( 'WP_LOCAL_DEV', true ); // Activation of a local development
define( 'SCRIPT_DEBUG', true ); // Use development versions of the core JS and CSS files

/* cript and style debug */

define( 'CONCATENATE_SCRIPTS', false ); // WordPress scripts are integrated separately
define( 'SCRIPT_DEBUG', true ); // Uses non-minified scripts
define( 'SAVEQUERIES', true ); // Requires parsing of the global $wpdb object
define( 'COMPRESS_SCRIPTS', true ); // Enables script minimization
define( 'COMPRESS_CSS', true ); // Enables CSS minification
define( 'ENFORCE_GZIP', true ); // Enable GZIP minification

/* Disable WP cron in favor of server cron */

define( 'DISABLE_WP_CRON', true ); // Disable WP Crons Disable WP cron in favor of server cron
define( 'ALTERNATE_WP_CRON', true ); // lternate method of firing cron in the background when initiated by end users
define( 'WP_CRON_LOCK_TIMEOUT', MINUTE_IN_SECONDS ); // Limit cron runs to a specific interval

/* SSL */

define( 'FORCE_SSL_LOGIN', true ); // Only secrue the registration/login process
define( 'FORCE_SSL_ADMIN', true ); // Force SSL for the whole WordPress admin

/* Extern requests */

define( 'WP_HTTP_BLOCK_EXTERNAL', true ); // External requests are blocked
define( 'WP_ACCESSIBLE_HOSTS', 'api.wordpress.org' ); // Whitelist | Only allow particular hosts in

/* Modifying files */

define( 'DISALLOW_FILE_EDIT', true ); // Kill the WordPress file editor
define( 'DISALLOW_FILE_MODS', true ); // Don't allow users to update core, plugins, or themes
define( 'IMAGE_EDIT_OVERWRITE', true ); // Allow editing images to replace the originals

// Modifying files
define( 'DISALLOW_FILE_EDIT', true ); // Kill the WordPress file editor
define( 'DISALLOW_FILE_MODS', true ); // Don't allow users to update core, plugins, or themes
define( 'IMAGE_EDIT_OVERWRITE', true ); // Allow editing images to replace the originals

/* Changing WordPress updates */

define( 'AUTOMATIC_UPDATER_DISABLED', true ); // Disable all WordPress auto-updates
define( 'WP_AUTO_UPDATE_CORE', false ); // Only disable core updates
define( 'WP_AUTO_UPDATE_CORE', 'minor' ); // Only enable minor core updates

/* Change languages */

define( 'WPLANG', 'de_DE' ); // Setting the language version used
define( 'WP_LANG_DIR', dirname(__FILE__) . 'wordpress/languages' ); // Path for the language files

/* Trash */

define( 'EMPTY_TRASH_DAYS', 30 ); // Number of days to wait before emptying the trash
define( 'MEDIA_TRASH', false ); // Whether to allow media items to use the trash functionality

/* Dev Tools */

define( 'SHORTINIT', true ); // Disable most of WordPress. Useful for fast responses for custom integrations
define( 'WP_USE_THEMES', true ); // Override if you love WordPress, but hate themes

/* fatal error handling */

define( 'WP_SANDBOX_SCRAPING', true ); // Turn off WSOD Protection (and don't send email notification)
define( 'RECOVERY_MODE_EMAIL', 'info@deinwp.de' ); // Modify the WordPress start time. 
define( 'WP_START_TIMESTAMP', microtime( true ) ); // Set a recovery mode email.

Quellen und Fußnoten[+]

Erkunde weitere Beiträge

Schreibe einen Kommentar