Config.php в WordPress: как правильно настроить
Основные способы настройки файла wp-config.php
Как задать основные параметры подключения к базе данных?
Файл wp-config.php содержит константы, определяющие соединение с MySQL. Наиболее эффективный способ включает использование сгенерированных ключей и безопасных значений. Пример стандартной конфигурации:
define('DB_NAME', 'wordpress_db');
define('DB_USER', 'db_user');
define('DB_PASSWORD', 'db_password');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
$table_prefix = 'wp_';
Пояснение: каждая константа определяет соответствующий параметр. DB_COLLATE обычно оставляется пустым для использования кодировки по умолчанию. Префикс таблиц $table_prefix позволяет отделить таблицы WordPress от других в той же базе.
Как изменить префикс таблиц после установки WordPress?
Префикс таблиц задается переменной $table_prefix. Если требуется изменить его после установки, необходимо обновить wp-config.php и переименовать все таблицы в базе данных. Пример SQL-команды:
RENAME TABLE wp_old_commentmeta TO new_commentmeta;
Автоматизировать процесс можно с помощью плагина или WP-CLI. Команда для WP-CLI: wp config set table_prefix 'new_'. Однако это не переименует существующие таблицы; потребуется отдельный скрипт или плагин.
Как включить режим отладки для разработки?
Следующие строки могут быть добавлены в wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
WP_DEBUG активирует режим отладки. WP_DEBUG_LOG сохраняет ошибки в файл /wp-content/debug.log. WP_DEBUG_DISPLAY отключает вывод ошибок на экран (рекомендуется для продакшена).
Как добавить уникальные ключи и соли для повышения безопасности?
WordPress использует набор констант (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY и т.д.) для шифрования сессий. Рекомендуется генерировать их через официальный сервис: https://api.wordpress.org/secret-key/1.1/salt/. Полученные строки копируются и вставляются в wp-config.php, заменяя старые. Пример частичной замены:
define('AUTH_KEY', 'уникальный_набор_символов');
define('SECURE_AUTH_KEY', 'другой_набор');
Альтернативный метод: команда WP-CLI wp config generate-salts.
Как настроить многосайтовость (WordPress Multisite)?
Для активации мультисайта добавляется константа WP_ALLOW_MULTISITE, а после установки сетки добавляются дополнительные константы:
define('WP_ALLOW_MULTISITE', true);
// после установки сетки добавить:
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
Пояснение: эти константы активируют и настраивают режим сети. Изменение SUBDOMAIN_INSTALL на true включает поддомены вместо подкаталогов.
Как изменить лимит памяти для WordPress?
Константа WP_MEMORY_LIMIT задается для фронтенда, а WP_MAX_MEMORY_LIMIT для административной панели:
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
Обычно значения указываются в мегабайтах с суффиксом 'M'. Если сервер позволяет, увеличение лимита выполняется для сложных операций.
Как настроить автоматические обновления WordPress?
Константа WP_AUTO_UPDATE_CORE управляет обновлениями ядра. Возможные значения: true (все обновления), false (отключить) или 'minor' (только минорные):
define('WP_AUTO_UPDATE_CORE', 'minor');
Дополнительно можно отключить обновления для конкретных плагинов через фильтры, но это уже не относится к wp-config.php.
Как включить SSL для административной панели?
Константы, форсирующие HTTPS, добавляются следующим образом:
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
Пояснение: FORCE_SSL_ADMIN перенаправляет все запросы к админке на HTTPS. FORCE_SSL_LOGIN обеспечивает защиту входа.
Как настроить отправку почты через SMTP?
WordPress использует функцию wp_mail(), которая по умолчанию применяет PHP mail(). Для использования внешнего SMTP константы добавляются (требуется поддержка плагином или кодом):
define('SMTP_HOST', 'smtp.example.com');
define('SMTP_PORT', 587);
define('SMTP_AUTH', true);
define('SMTP_USER', 'user@example.com');
define('SMTP_PASS', 'password');
define('SMTP_SECURE', 'tls');
Эти константы не являются встроенными; для их использования необходимо добавить код в functions.php или установить плагин SMTP. В wp-config.php они лишь хранят настройки.
Как использовать WP-CLI для изменения wp-config.php?
WP-CLI предоставляет команды для управления константами без ручного редактирования. Примеры:
# Установить константу отладки
wp config set WP_DEBUG true --raw
# Получить значение
wp config get WP_DEBUG
# Удалить константу
wp config delete WP_DEBUG
Флаг --raw позволяет задать значение без кавычек. Команды изменяют wp-config.php автоматически.
Как редактировать wp-config.php через плагин?
Существуют плагины, например 'WP Config Editor', которые позволяют редактировать константы через интерфейс админки. Однако такой подход менее безопасен, так как плагин может иметь уязвимости. Рекомендуется использовать только для временных изменений.
Расширенные примеры конфигурации wp-config.php
1. Настройка кэширования Redis
Для использования Redis как объектного кэша добавляются константы (требуется установка плагина Redis Object Cache):
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
define('WP_REDIS_PREFIX', 'myapp');
Пояснение: эти константы задают подключение к серверу Redis. После добавления включается объектный кэш в настройках плагина. Результат: ускорение работы за счет хранения данных в оперативной памяти.
// В файле debug.log может появиться: [Redis] Flushed object cache
2. Настройка отладки с логированием в отдельный файл
Для удобства можно указать путь к лог-файлу вне wp-content:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', '/var/log/wordpress/debug.log');
define('WP_DEBUG_DISPLAY', false);
Пояснение: WP_DEBUG_LOG может принимать строку с абсолютным путем. Следует убедиться, что каталог существует и сервер имеет права на запись.
Пример записи лога: [11-Apr-2025 14:33:22 UTC] PHP Notice: Undefined variable: test in /var/www/wp-content/themes/mytheme/functions.php on line 10
3. Настройка cron через wp-config (отключение встроенного cron)
Для использования системного cron отключается встроенный планировщик WordPress:
define('DISABLE_WP_CRON', true);
После этого в crontab настраивается задача: * * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Пояснение: это освобождает ресурсы сервера от проверки расписания при каждом запросе.
4. Настройка лимита PHP скриптового времени выполнения
WordPress может увеличить лимит времени выполнения через константу WP_DISABLE_FATAL_ERROR_HANDLER (не рекомендуется). Вместо этого используется:
set_time_limit(300); // в functions.php
Однако в wp-config.php можно задать максимальное время выполнения для админки:
define('WP_MAX_EXECUTION_TIME', 300);
Пояснение: эта константа влияет на выполнение длительных операций (например, импорт).
5. Настройка прокси для WP-Cron
Если сервер находится за прокси, может потребоваться указать константы:
define('WP_CRON_LOCK_TIMEOUT', 300);
define('ALTERNATE_WP_CRON', true);
Пояснение: ALTERNATE_WP_CRON включает альтернативный механизм запуска cron.
6. Принудительное использование HTTPS для всего сайта
Добавляются константы, которые заменяют http на https в ссылках:
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');
Также можно форсировать редирект через .htaccess, но wp-config.php фиксирует базовый URL.
7. Задание собственного пути к uploads
Можно переопределить каталог загрузок через константу:
define('UPLOADS', 'custom-uploads');
Пояснение: относительный путь от wp-content. Если указан абсолютный, то относительно корня WordPress.
8. Отключение Post autosave
Для разработки можно отключить автосохранение записей:
define('AUTOSAVE_INTERVAL', 86400); // установить большое значение
Полностью отключить автосохранение нельзя, но можно существенно увеличить интервал.