Triky s konfigurací WordPressu
Mnoho uživatelů WordPressu zná soubor wp-config.php
jako klíč k databázi WordPressu. V něm se nastavuje název databáze, uživatelské jméno, heslo a umístění (kromě jiných věcí, jako jsou bezpečnostní klíče, předpona databáze a lokalizovaný jazyk).
Tady je snímek obrazovky souboru wp-config.php
(neboli konfiguračního souboru WordPressu) pro ty, kteří ho možná ještě neznají:
Mnoho uživatelů však neví, že soubor wp-config.php
lze použít k zadání nejrůznějších konfiguračních nastavení, což vám umožní zlepšit funkčnost, výkon a zabezpečení webu poháněného systémem WordPress. V tomto článku se s vámi podělím o tolik těchto konfiguračních triků, kolik se mi jich za léta podařilo nasbírat. Tento průvodce zahrnuje vše, co je uvedeno v Kodexu WordPressu, a také některé další triky, se kterými jste se pravděpodobně ještě nesetkali. Pokud víte o dalších konfiguračních tricích WordPressu, podělte se o ně v komentářích a já je do příspěvku přidám.
Pověřovací údaje databáze *
Tato sada čtyř konfiguračních definic je nutná pro připojení WordPressu k databázi:
define('DB_NAME', 'database-name');define('DB_USER', 'database-username');define('DB_PASSWORD', 'database-password');define('DB_HOST', 'localhost');
Název databáze, uživatelské jméno a heslo by měly být snadno dostupné při vytváření databáze, ale hodnotu DB_HOST
může být obtížnější získat. Nejčastěji je tato hodnota jednoduše „localhost
„, ale pokud to nefunguje, zde je několik dalších hodnot, které můžete vyzkoušet:
- 1and1 Hosting –
db12345678
- DreamHost –
mysql.example.com
- GoDaddy –
h41mysql52.secureserver.net
- ICDSoft –
localhost:/tmp/mysql5.sock
- MediaTemple (GS) –
internal-db.s44441.gridserver.com
- Pair Networks –
dbnnnx.pair.com
- Yahoo –
mysql
Můžete zadat i alternativní port pro databázový server. Zde jsou dva příklady:
define('DB_HOST', 'localhost:1234');
define('DB_HOST', 'mysql.domain.tld:1234');
Dalším skvělým trikem je automatické zjištění hodnoty databázového serveru:
define('DB_HOST', $_ENV{DATABASE_SERVER});
Pokud všechny tyto způsoby selžou nebo pokud máte stále problémy, obraťte se o pomoc na svého poskytovatele hostingu.
Sada znaků databáze a collation *
Od verze WordPress 2.2 můžete zadat sadu znaků pro tabulky databáze MySQL. Obecně není důvod měnit výchozí hodnotu znakové sady UTF-8, která je obvykle ideální, protože podporuje všechny jazyky. Zde je výchozí (a doporučené) nastavení:
define('DB_CHARSET', 'utf8');
Ve verzi 2.2 aplikace WordPress můžete také zadat collation, což je pořadí řazení znakové sady vaší databáze. Nastavení collation zpravidla řeší MySQL automaticky podle znakové sady, což je umožněno ponecháním prázdné hodnoty collation, jak je provedeno ve výchozím nastavení této definice. Zde je výchozí (a doporučené) nastavení:
define('DB_COLLATE', '');
wp-config.php
.Bezpečnostní klíče *
Od verze WordPress 2.7 jsou k dispozici čtyři bezpečnostní klíče, které mají zajistit lepší šifrování souborů cookie. Tyto klíče pracují tiše na pozadí a měly by být co nejnáhodnější a nejsložitější (ne, nikdy si je nebudete muset pamatovat). Nejjednodušší způsob, jak tyto klíče vygenerovat, je provést to automaticky ve službě tajných klíčů WordPress.org. Stačí navštívit tento odkaz a zkopírovat/vložit výsledky do souboru wp-config.php
. Upozorňujeme, že tyto klíče lze kdykoli změnit, což zneplatní všechny stávající soubory cookie vašich uživatelů, takže se budou muset na váš web znovu přihlásit.
define('AUTH_KEY', ':dr+%/5V4sAUG-gg%aS*v;&xGhd%{YV)p:Qi?jXLq,<h\`39');define('SECURE_AUTH_KEY', '@*+S=8\"\'+\"}]<m#+}V)p:Qi?jXLq,<h\`39m_(');define('LOGGED_IN_KEY', 'S~AACm4h1;T^\"qW3_8Zv!Ji=y|)~5i63JI |Al.'/path/to/wordpress');define('WP_SITEURL', 'http://'.$_SERVER.'/path/to/wordpress');
Při použití na veřejném webu je pravděpodobně nejlepší tyto hodnoty vynechat.
Cesta k šabloně a cesta ke stylopisu
Stejně jako u předdefinovaných konstant pro adresu blogu a adresu webu (viz předchozí část) můžete také zvýšit výkon eliminací dotazů do databáze pro cestu k šabloně a cestu ke stylopisu vašeho webu. Zde jsou výchozí hodnoty těchto dvou definic:
define('TEMPLATEPATH', get_template_directory());define('STYLESHEETPATH', get_stylesheet_directory());
Tak, jak jsou, se tyto dvě definice stále dotazují databáze, ale můžeme tyto nadbytečné dotazy eliminovat tím, že hodnoty napevno zakódujeme na místo:
define('TEMPLATEPATH', '/absolute/path/to/wp-content/themes/active-theme');define('STYLESHEETPATH', '/absolute/path/to/wp-content/themes/active-theme');
Zakázat mezipaměť a vypršení mezipaměti
Tyto dvě možnosti platí pro starší verze WordPressu, které stále používají výchozí mechanismus mezipaměti založený na objektech. První definice umožňuje povolit nebo zakázat mezipaměť, zatímco druhá definice umožňuje určit dobu vypršení platnosti mezipaměti.
Povolit mezipaměť
define('WP_CACHE', true); // enable the cachedefine('ENABLE_CACHE', true); // enable the cachedefine('CACHE_EXPIRATION_TIME', 3600); // in seconds
Zakázat mezipaměť
define('WP_CACHE', false); // disable the cachedefine('DISABLE_CACHE', true); // disable the cache
Určit doménu souborů cookie
Existuje několik důvodů, proč chcete pro svůj web určit doménu souborů cookie. Běžným příkladem je zabránění odesílání souborů cookie s požadavky na statický obsah na subdoménách. V takovém případě byste pomocí této definice řekli systému WordPress, aby soubory cookie odesílal pouze na vaši nestatickou doménu. To by mohlo znamenat výrazné zvýšení výkonu. Zde je několik příkladů nastavení různých informací o cestě k souborům cookie a doméně souborů cookie:
define('COOKIE_DOMAIN', '.digwp.com'); // don't omit the leading '.'define('COOKIEPATH', preg_replace('|https?://+|i', '', get_option('home').'/'));define('SITECOOKIEPATH', preg_replace('|https?://+|i', '', get_option('siteurl').'/'));define('PLUGINS_COOKIE_PATH', preg_replace('|https?://+|i', '', WP_PLUGIN_URL));define('ADMIN_COOKIE_PATH', SITECOOKIEPATH.'wp-admin');
Override File Permissions
Pokud jsou výchozí oprávnění k souborům vašeho webového hostitele příliš omezující, může přidání těchto definic do konfiguračního souboru WordPressu pomoci problém vyřešit. Všimněte si, že kolem hodnot oprávnění není třeba uvádět uvozovky. Například:
define('FS_CHMOD_FILE', 0755);define('FS_CHMOD_DIR', 0755);
Zobrazit všechny definované konstanty
Potřebujete zobrazit všechny předdefinované konstanty? Dobrá zpráva, tato funkce PHP vrátí pole všech aktuálně definovaných konstant:
print_r(@get_defined_constants());
Vlastní tabulky uživatelů a usermeta
Co s vlastními tabulkami uživatelů a usermeta? Ano, i to můžete udělat pomocí následujících definic:
define('CUSTOM_USER_TABLE', $table_prefix.'my_users');define('CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta');
Konstanty FTP/SSH
Tato sada konfiguračních definic je určena k tomu, aby pomohla uživatelům najít a využít připojení FTP/SSH. Zde je příklad sady předdefinovaných konstant pro aktualizace FTP/SSH:
define('FS_METHOD', 'ftpext'); // forces the filesystem method: "direct", "ssh", "ftpext", or "ftpsockets"define('FTP_BASE', '/path/to/wordpress/'); // absolute path to root installation directorydefine('FTP_CONTENT_DIR', '/path/to/wordpress/wp-content/'); // absolute path to "wp-content" directorydefine('FTP_PLUGIN_DIR ', '/path/to/wordpress/wp-content/plugins/'); // absolute path to "wp-plugins" directorydefine('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub'); // absolute path to your SSH public keydefine('FTP_PRIVKEY', '/home/username/.ssh/id_rsa'); // absolute path to your SSH private keydefine('FTP_USER', 'username'); // either your FTP or SSH usernamedefine('FTP_PASS', 'password'); // password for FTP_USER usernamedefine('FTP_HOST', 'ftp.domain.tld:21'); // hostname:port combo for your SSH/FTP server
Přesun adresáře wp-content
Od verze WordPress 2.6 můžete změnit výchozí umístění adresáře wp-content
. Existuje několik dobrých důvodů, proč to udělat, včetně zvýšení bezpečnosti webu a usnadnění aktualizací FTP. Některé příklady:
// full local path of current directory (no trailing slash)define('WP_CONTENT_DIR', $_SERVER.'/path/wp-content'); // full URI of current directory (no trailing slash)define('WP_CONTENT_URL', 'http://domain.tld/path/wp-content');
Můžete také dále zadat vlastní cestu pro adresář plugins
. To může pomoci při problémech s kompatibilitou s některými zásuvnými moduly:
// full local path of current directory (no trailing slash)define('WP_PLUGIN_DIR', $_SERVER.'/path/wp-content/plugins'); // full URI of current directory (no trailing slash)define('WP_PLUGIN_URL', 'http://domain.tld/path/wp-content/plugins');
Řešení revizí příspěvků
Nejnovější verze systému WordPress poskytují systém revizí příspěvků, který umožňuje uživatelům ukládat různé verze příspěvků na blogu a v případě potřeby se dokonce vrátit k dříve uloženým verzím. Bez ohledu na to, jak moc touto úžasně úžasnou funkcí pohrdáte nebo nepohrdáte, zde je několik konfiguračních definic, které se vám mohou hodit 😉
Omezit počet uložených revizí
define('WP_POST_REVISIONS', 3); // any integer, but don't get too crazy
Zakázat funkci revize příspěvků
define('WP_POST_REVISIONS', false);
Určit interval automatického ukládání
V podobném duchu jako funkce revize příspěvků je skutečně užitečná funkce automatického ukládání ve WordPressu. Ve výchozím nastavení WordPress ukládá vaši práci každých 60 sekund, ale toto nastavení můžete zcela libovolně upravit. Neblázněte však příliš, pokud nechcete stresovat svůj server 😉
define('AUTOSAVE_INTERVAL', 160); // in seconds
Debugování WordPressu
Od verze WordPressu 2.3.1 mohou uživatelé zobrazovat určité chyby a varování, které jim pomáhají při ladění webu. Od verze WordPress 2.5 se zapnutím hlášení chyb zvýší úroveň hlášení na E_ALL
a aktivují se varování pro zastaralé funkce. Ve výchozím nastavení (tj. pokud není v souboru wp-config.php
zadána žádná definice) je hlášení chyb vypnuto.
define('WP_DEBUG', true); // enable debugging modedefine('WP_DEBUG', false); // disable debugging mode (default)
Konfigurace protokolu chyb
Zde je jednoduchý způsob, jak povolit základní protokolování chyb pro váš web poháněný WordPressem. Vytvořte soubor s názvem „php_error.log
„, vytvořte jej tak, aby byl zapisovatelný na server, a umístěte jej do vybraného adresáře. Poté upravte cestu ve třetím řádku následujícího kódu a umístěte jej do souboru wp-config.php
:
@ini_set('log_errors','On');@ini_set('display_errors','Off');@ini_set('error_log','/home/path/domain/logs/php_error.log');
Zvětšit paměť PHP
Pokud se vám zobrazují chybová hlášení s hlášením, že „Povolená velikost paměti xxx bajtů vyčerpána“, může toto nastavení pomoci problém vyřešit. Od verze 2.5 WordPressu umožňuje definice WP_MEMORY_LIMIT
určit maximální velikost paměti, kterou může PHP využívat. Ve výchozím nastavení se WordPress automaticky pokusí zvýšit paměť PHP až na 32 MB, takže toto nastavení je nutné pouze pro hodnoty vyšší než 32 MB. Všimněte si, že někteří webhostitelé možnost navýšení paměti PHP zakazují, takže je o to možná budete muset požádat. Zde je několik příkladů:
define('WP_MEMORY_LIMIT', '64M');define('WP_MEMORY_LIMIT', '96M');define('WP_MEMORY_LIMIT', '128M');
Uložení a zobrazení databázových dotazů pro analýzu
Tato technika je ideální pro ukládání databázových dotazů a zobrazení informací pro následnou analýzu. Proces ukládá každý dotaz, jeho přidruženou funkci a celkový čas jeho provedení. Tyto informace se uloží jako pole a lze je zobrazit na libovolné stránce šablony motivu. Chcete-li to provést, přidejte nejprve do souboru wp-config.php
následující směrnici:
define('SAVEQUERIES', true);
Poté do zápatí aktivního motivu umístěte následující kód:
// display the query array for admin onlyif (current_user_can('level_10')) {global $wpdb;echo "<pre>";print_r($wpdb->queries);echo "</pre>";}
Tady je jednořádková verze této funkce:
<?php if (current_user_can('level_10')) { global $wpdb; echo "<pre>"; print_r($wpdb->queries); echo "</pre>"; } ?>
Kontrola přístupu k proxy serveru
Od verze WordPress 2.8 lze konfigurační soubor použít k definování konstant spojených s blokováním, povolováním a filtrováním přístupu ke konkrétním hostitelům zpoza proxy serveru. Pokud například hostujete svůj web WordPress v intranetové síti, můžete pomocí první níže uvedené definice zakázat přístup ke všem externím hostitelům a povolit pouze požadavky z localhostu a svého blogu. Můžete také povolit přístup konkrétním hostitelům pomocí seznamu povolených názvů hostitelů oddělených čárkou, jak ukazuje třetí definice níže.
define('WP_HTTP_BLOCK_EXTERNAL', true); // block external requestsdefine('WP_HTTP_BLOCK_EXTERNAL', false); // allow external requestsdefine('WP_ACCESSIBLE_HOSTS', 'api.wordpress.org'); // whitelist hosts
api.wordpress.org
, abyste zajistili správnou funkčnost základních souborů a zásuvných modulů.Uf! Jsem vyřízený. Je čas na malou přestávku 🙂
Poznámky
- * Označuje, že kód je obsažen ve výchozím souboru
wp-config.php
- Brazilský překlad do portugalštiny (autor Tárcio Zemel)
.