0
99
2017-02-10

WordPress - Трюки с wp-config.php

Многие не знают, что wp-config.php файл может использоваться для указания большого количества конфигурационных параметров, позволяющих улучшить функциональность сайта. Я решил это исправить!
Понравилась страница? Поставь свою оценку!
PLUGIN_STAR_RATINGS.SCORE_TEXTPLUGIN_STAR_RATINGS.VOTES_TEXT

Многие пользователи WordPress знают этот wp-config.php файл как ключевой файл для подключения к базе данных WordPress. В данном файле можно узнать имя базы данных, имя пользователя, пароль и местоположение (среди прочего, так же как ключи безопасности, префикс базы данных, локализованный язык и не только).

Вот скриншот wp-config.php (файл конфигурации WordPress) для тех, кто еще не знаком с ним:

Файл конфигурации WordPress, wp-config.php

Файл wp-config.php содержит информацию, необходимую для подключения WordPress к базе данных

Но многие пользователи не знают, что wp-config.php файл может использоваться для указания большого количества конфигурационных параметров, позволяющих улучшить функциональность, производительность и безопасность вашего сайта на WordPress. В этой статье я разделю многие из этих конфигурационных трюков, которые я смог собрать за последние несколько лет рабоыт с WP.

Это руководство охватывает трюки указанные в WordPress Codex , а также некоторые дополнительные трюки, которые вы, вероятно, раньше не видели. Если вы знаете какие-либо другие трюки конфигурации WordPress, поделитесь ими в комментариях, и я добавлю их в сообщение.

Учетные данные базы данных

Этот набор из четырех конфигурационных определений требуется для подключения WordPress к базе данных:

define('DB_NAME', 'database-name');
define('DB_USER', 'database-username');
define('DB_PASSWORD', 'database-password');
define('DB_HOST', 'localhost');

Имя базы данных, имя пользователя и пароль должны быть легко доступны вам при создании базы данных, но DB_HOST значение с которым некоторые пользователи не могут разобраться сразу. Чаще всего это значение просто «localhost», но если это не сработает, вот несколько других значений-примеров указаных в зависимости от Вашего хостинга:

  • 1and1 Хостинг -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

Вы даже можете указать альтернативный порт для своего сервера базы данных. Вот два примера:

define('DB_HOST', 'localhost:1234');  
define('DB_HOST', 'mysql.domain.tld:1234');

Еще один классный способ - автоматически определить значение сервера базы данных:

define('DB_HOST', $_ENV{DATABASE_SERVER});

Если у вас все еще есть проблемы во время применения данной настройки, самый верный способ - обратитесь за помощью к своему провайдеру хостинга.

Набор символов и сортировка базы данных

Начиная с версии WordPress версии 2.2 вы можете указать набор символов для таблиц базы данных MySQL. Как правило, нет оснований изменять значение символьного значения по умолчанию для UTF-8, которое обычно идеально подходит, поскольку оно поддерживает все языки. Вот настройка по умолчанию (которая рекомендуется самими разработчиками WordPress):

define('DB_CHARSET', 'utf8');

Версия WordPress 2.2 также позволяет вам указать сортировку, которая является порядком сортировки набора символов базы данных. Настройка сортировки обычно обрабатывается MySQL MySQL в соответствии с набором символов, который активируется, оставляя значение сортировки пустым, как это сделано в настройках по умолчанию для этого определения. Вот настройка по умолчанию (которая рекомендуется самими разработчиками WordPress):

define('DB_COLLATE', '');

Примечание. Используйте только эти два определения, если они уже существуют в вашем wp-config.php файле.

Ключи безопасности

Начиная с WordPress 2.7 существует четыре ключа безопасности, предназначенные для обеспечения лучшего шифрования файлов cookie. Эти настройки работают тихо в фоновом режиме и должны быть как можно более случайными и сложными (нет, вам никогда не понадобится их запоминать). Самый простой способ сгенерировать эти ключи - сделать это автоматически в службе секретного ключа WordPress.org . Просто зайдите на эту ссылку и скопируйте / вставьте результаты в свой wp-config.php файл. Обратите внимание, что эти ключи могут быть изменены в любое время, и это приведет к аннулированию всех существующих файлов cookie ваших пользователей.

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[(<YS');
define('NONCE_KEY', 'k1+EOc-&w?hG8j84>6L9v\"6C89NH?ui{*3\\(t09mumL/fF');

Префикс базы данных

Настройка префикса базы данных особенно полезна для повышения безопасности вашего сайта и для размещения нескольких объектов WordPress в одной базе данных. Изменяя значение по умолчанию « wp_» на случайное, уникальное, вы уменьшаете общие целевые атаки и улучшаете общую безопасность своего сайта. Вот настройка по умолчанию:

$table_prefix  = 'wp_';

Применение префикса базы данных по умолчанию, это очень плохая практика. Лучше изменить его на что-то вроде «x777_» - это хороший способ избежать целенаправленных атак на Ваш сайт.

Вы также можете использовать этот параметр для установки нескольких экземпляров WordPress с использованием той же базы данных. Просто укажите уникальный префикс базы данных для каждой установки:

$table_prefix  = 'wp1_'; // first blog
$table_prefix  = 'wp2_'; // second blog
$table_prefix  = 'wp3_'; // third blog

Языковые настройки

WordPress позволяет указать файл перевода языка и связанный с ним каталог. Предполагается, что файл перевода языка имеет «.mo», и его местоположение по умолчанию (если не указано явное указание пути) считается wp-content/languages(первым), а затем wp-includes/languages(вторым). Вот настройка по умолчанию:

define('WPLANG', '');
define('LANGDIR', '');

Настройки каталога

wp-config.php файл, по умолчанию содержит несколько строк, которые указывают абсолютный путь и включают файл настроек. Я включаю их здесь для полноты:

/** WordPress absolute path to the Wordpress directory. */
if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

Адрес блога и адрес сайта

Теперь мы добираемся до некоторых классных вещей. По умолчанию эти два определения конфигурации не включены в wp-config.php файл, но их необходимо добавить для повышения производительности. Эти два параметра были введены в WordPress версии 2.2 и переопределяют значение базы данных без их фактического изменения.

Добавление этих двух определений в wp-config.php файл вашего сайта уменьшает количество запросов к базе данных и, таким образом, повышает производительность сайта. Эти параметры должны соответствовать указанным в вашем WordPress Admin. Вот пример (обратите внимание, что вы не должны включать конечную косую черту в конце любого URL-адреса):

define('WP_HOME', 'https://digwp.com');
define('WP_SITEURL', 'https://digwp.com');

Данный трюк заключается в том, чтобы динамически устанавливать эти значения, захватывая глобальную переменную сервера:

define('WP_HOME', 'http://'.$_SERVER['HTTP_HOST'].'/path/to/wordpress');
define('WP_SITEURL', 'http://'.$_SERVER['HTTP_HOST'].'/path/to/wordpress');

Вероятно, лучше избегать этих значений при использовании на общедоступном сайте.

Путь шаблона и путь стилей

Как и с предопределенными константами для адреса блога и адреса сайта (см. Предыдущий раздел), вы также можете повысить производительность за счет исключения запросов к базе данных для пути шаблона и пути стилей для вашего сайта. Вот значения по умолчанию для этих двух определений:

define('TEMPLATEPATH', get_template_directory());
define('STYLESHEETPATH', get_stylesheet_directory());

Эти два определения по-прежнему запрашивают базу данных, но мы можем устранить эти посторонние запросы путем жесткого кодирования значений:

define('TEMPLATEPATH', '/absolute/path/to/wp-content/themes/active-theme');
define('STYLESHEETPATH', '/absolute/path/to/wp-content/themes/active-theme');

Отключение и включение кеширования

Эти два параметра относятся к более старым версиям WordPress, которые все еще используют механизм кэширования по умолчанию на основе объектов. Первое определение позволяет включить или отключить кеш, в то время как второе определение позволяет указать время истечения кеша.

Включить кеш

define('WP_CACHE', true);      // enable the cache
define('ENABLE_CACHE', true);  // enable the cache
define('CACHE_EXPIRATION_TIME', 3600); // in seconds

Отключить кеш

define('WP_CACHE', false);     // disable the cache
define('DISABLE_CACHE', true); // disable the cache

Существует несколько причин, по которым Вам может потребоваться указать домен cookie для своего сайта. Обычный пример включает предотвращение отправки cookie с запросами на статический контент на субдоменах. В этом случае вы должны использовать это определение, чтобы сообщить WordPress отправлять файлы cookie только в нестатический домен. Это может быть значительным повышением производительности. Ниже приведены некоторые примеры настройки различных путей к файлу cookie и информации домена 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');

Переопределение прав на файлы

Если права доступа к файлу вашего веб-хоста слишком строгие, добавление этих определений в файл конфигурации WordPress может помочь решить проблему. Обратите внимание, что вам не нужны кавычки вокруг значений разрешений. Например:

define('FS_CHMOD_FILE', 0755);
define('FS_CHMOD_DIR', 0755);

Просмотреть все заданные константы

Нужно просмотреть все предопределенные константы? Эта функция PHP вернет массив из всех констант, определенных в настоящее время:

print_r(@get_defined_constants());

Таблицы пользователей и User meta

Как насчет пользователей и пользовательских таблиц? Да, вы тоже можете это сделать, со следующими определениями:

define('CUSTOM_USER_TABLE', $table_prefix.'my_users');
define('CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta');

Константы FTP / SSH

Этот набор конфигурационных определений разработан, чтобы помочь пользователям находить и использовать соединения FTP / SSH. Ниже приведен пример набора предопределенных констант для обновлений 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 directory
define('FTP_CONTENT_DIR', '/path/to/wordpress/wp-content/'); // absolute path to "wp-content" directory
define('FTP_PLUGIN_DIR ', '/path/to/wordpress/wp-content/plugins/'); // absolute path to "wp-plugins" directory
define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub'); // absolute path to your SSH public key
define('FTP_PRIVKEY', '/home/username/.ssh/id_rsa'); // absolute path to your SSH private key
define('FTP_USER', 'username'); // either your FTP or SSH username
define('FTP_PASS', 'password'); // password for FTP_USER username
define('FTP_HOST', 'ftp.domain.tld:21'); // hostname:port combo for your SSH/FTP server

Перемещение каталога wp-content

Начиная с версии WordPress версии 2.6 вы можете изменить расположение wp-content каталога по умолчанию. Для этого есть несколько веских причин, включая повышение безопасности сайта и упрощение обновлений FTP. Некоторые примеры:

// full local path of current directory (no trailing slash)
define('WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'].'/path/wp-content'); 

// full URI of current directory (no trailing slash)
define('WP_CONTENT_URL', 'http://domain.tld/path/wp-content');

Перемещение каталога wp-content/plugins

Вы также можете указать собственный путь для своего plugins каталога. Это может помочь с проблемами совместимости с некоторыми плагинами:

// full local path of current directory (no trailing slash)
define('WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'].'/path/wp-content/plugins'); 

// full URI of current directory (no trailing slash)
define('WP_PLUGIN_URL', 'http://domain.tld/path/wp-content/plugins');

Работа с публикациями

Последние версии WordPress предоставляют систему пост-ревизии, которая позволяет пользователям сохранять разные версии своих сообщений в блогах и даже при необходимости возвращаться к ранее сохраненным версиям. Независимо от того, сколько вы делаете или не презираете эту удивительно удивительную особенность, вот пара конфигурационных определений, которые могут оказаться полезными для вас;)

Ограничить количество сохраненных версий

define('WP_POST_REVISIONS', 3); // any integer, but don't get too crazy

Отключите функцию пост-ревизии

define('WP_POST_REVISIONS', false);

Укажите интервал автосохранения

В том же духе, что и функция пост-ревизии, действительно полезная функция - Autosave WordPress. По умолчанию WordPress сохраняет вашу запись или страницу каждые 60 секунд, но вы можете полностью изменить этот параметр на все, что захотите.

define('AUTOSAVE_INTERVAL', 160); // в секундах

Отладка WordPress

Поскольку в WordPress версии 2.3.1, пользователи смогли отображать определенные ошибки и предупреждения, чтобы помочь в отладке сайта. Начиная с версии WordPress версии 2.5, включение отчета об ошибках повышает уровень отчетности E_ALL и активирует предупреждения для устаревших функций. По умолчанию (т.е. Если в wp-config.php файле не указано определение), отчет об ошибках отключается.

define('WP_DEBUG', true); // enable debugging mode
define('WP_DEBUG', false); // disable debugging mode (default)

Конфигурация журнала ошибок

Вот простой способ включить базовую регистрацию ошибок для вашего сайта на WordPress. Создайте файл с именем "php_error.log", сделайте его доступным для сервера и поместите его в каталог по вашему выбору. Затем отредактируйте путь в третьей строке следующего кода и поместите в свой wp-config.php файл:

@ini_set('log_errors','On');
@ini_set('display_errors','Off');
@ini_set('error_log','/home/path/domain/logs/php_error.log');

Увеличить память PHP

Если вы получаете сообщения об ошибках, сообщающие вам, что ваш «Разрешенный размер памяти хххх байтов исчерпан», этот параметр может помочь решить проблему. AS WordPress версии 2.5, WP_MEMORY_LIMIT определение позволяет указать максимальный объем памяти, который может быть использован PHP. По умолчанию WordPress автоматически попытается увеличить память PHP до 32 МБ, поэтому этот параметр необходим только для значений выше 32 МБ. Обратите внимание, что некоторые веб-хосты отключают вашу способность увеличивать память PHP, поэтому вам может потребоваться попросить их сделать это. Вот некоторые примеры:

define('WP_MEMORY_LIMIT', '64M');
define('WP_MEMORY_LIMIT', '96M');
define('WP_MEMORY_LIMIT', '128M');

Сохранение и отображение запросов к базам данных для анализа

Этот метод идеально подходит для сохранения запросов к базе данных и отображения информации для последующего анализа. Процесс сохраняет каждый запрос, связанную с ним функцию и общее время выполнения. Эта информация сохраняется как массив и может отображаться на любой странице шаблона темы. Для этого сначала добавьте в wp-config.php файл следующую директиву:

define('SAVEQUERIES', true);

Затем в нижнем колонтитуле вашей активной темы поместите следующий код:

// display the query array for admin only
if (current_user_can('level_10')) {
    global $wpdb;
    echo "<pre>";
    print_r($wpdb->queries);
    echo "</pre>";
}

Вот однострочная версия этой функции:

<?php 
if (current_user_can('level_10')) { global $wpdb; echo "<pre>"; print_r($wpdb->queries); echo "</pre>"; } 
?>

Доступ к контрольным прокси

Начиная с WordPress 2.8, файл конфигурации может использоваться для определения констант, связанных с блокировкой, разрешениями и фильтрации доступа к определенным хостам из-за прокси-сервера. Например, если вы размещаете свой сайт WordPress в сети интрасети, вы можете запретить доступ ко всем внешним хостам и разрешать только запросы от localhost вашего блога, используя первое определение ниже. Вы также можете разрешать доступ определенным узлам с разделенным запятыми списком разрешенных имен хостов, как показано в третьем определении ниже.

define('WP_HTTP_BLOCK_EXTERNAL', true);  // block external requests
define('WP_HTTP_BLOCK_EXTERNAL', false); // allow external requests
define('WP_ACCESSIBLE_HOSTS', 'api.wordpress.org'); // whitelist hosts

Обратите внимание, что вы должны разрешить api.wordpress.org доступ для обеспечения надлежащей функциональности основных файлов и плагинов.

На сегодня думаю хватит, но скорее всего продолжу позже.



Статья была переведена для блога TechBlog.SDStudio.top
Источник: https://digwp.com