Новые трюки с wp-config, о которых вы, возможно, даже не слышали

Файл wp-config.php — один из самых любимых некоторыми разработчиками элементов WordPress, один из самых страшных ночных кошмаров для других.

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

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

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

Однако для надежности вы можете сделать копию вашей базы данных и файлов. Лучше перестраховаться, чем потом сожалеть о не сделанном — создание резервных копий как можно чаще это всегда полезно!

1. Установка темы по умолчанию для только что инсталлированной системы WordPress с помощью WP_DEFAULT_THEME

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

Не было бы здорово, если бы вам не нужно было изменять тему с «Twenty-Сколько-то-там» на вашу «Крутую базовую тему» каждый раз, когда вы устанавливаете новую систему WordPress?

Что ж, константа WP_DEFAULT_THEME сможет помочь в этом:

define( 'WP_DEFAULT_THEME', 'default-theme-folder-name' );

Вы можете спросить: «Как я могу установить другую тему по умолчанию, отредактировав файл wp-config.php, если этот файл создается при установке WordPress?» Отличный вопрос.

Но в этом случае мы не собираемся вносить изменения в файл wp-config.php: вместо этого мы вставляем приведенный выше код в файл wp-config-sample.php!

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

Изящно, не правда ли? Ни на одном сайте я не нашел упоминаний об этом замечательном способе (сам я наткнулся на эту технику случайно), и эта статья, возможно, впервые рассказывает об этой функции.

2. Отключение функции автоматического обновления WordPress с помощью AUTOMATIC_UPDATER_DISABLED

У вас могут быть собственные причины не желать того, чтобы WordPress обновлялся автоматически: вы можете быть разработчиком, который должен работать со многими версиями WordPress одновременно, или ваш веб-сайт размещается на очень нестабильном сервере, и от вас требуется быть крайне осторожными.

В любом случае, мы предлагаем вам решение, как отключить автоматические обновления WordPress:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

3. Включение функции «Trash» для медиа-файлов с помощью MEDIA_TRASH

Кому-нибудь приходилось кричать не своим голосом и посыпать всех и вся проклятьями в течение семи минут, после того, как вы удалили медиа-файл, который удалять не следовало? Мне приходилось, прежде чем я узнал об этой константе WordPress:

define( 'MEDIA_TRASH', true );

Установите ее, и вам никогда больше не придется беспокоиться об удалении медиа-файлов — если только вы не отключите функцию «trash» вовсе, установив для константы EMPTY_TRASH_DAYS значение «0».

С этим тоже нужно быть осторожным.

4. Разрешение WordPress игнорировать содержание папки wp-content при обновлении с помощью CORE_UPGRADE_SKIP_NEW_BUNDLED

Я не использую темы по умолчанию. Никогда. Я не против них, и не то чтобы они мне не нравились. Просто я предпочитаю создавать и использовать свои собственные темы.

Таким образом, мне не нужна новая тема по умолчанию при установке основных обновлений.

Поскольку WordPress очень гибкая система, я не одинок в том, что хочу пропустить внесение изменений в папку wp-content:

define( 'CORE_UPGRADE_SKIP_NEW_BUNDLED', true );

Это также может сделать процесс обновления немного быстрее. Вряд ли больше, чем на секунду, но все — таки.

5. Разрешение загрузок WordPress без применения фильтров для администраторов с помощью ALLOW_UNFILTERED_UPLOADS

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

Но что, если вы независимый разработчик программного обеспечения и хотите загрузить новые версии программного обеспечения — вы будете использовать FTP-клиент при каждом обновлении программного обеспечения?

Ничего подобного, вам просто нужно задать ALLOW_UNFILTERED_UPLOADS для ALLOW_UNFILTERED_UPLOADS следующим образом:

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Этот код не позволяет пользователям загружать любые типы файлов. Только администраторы могут загрузить все, что им нужно.

6. Динамическая настройка WPLANG для мультиязычных сайтов

Если у вас есть мультиязычный сайт и вам нужно, чтобы язык вашей темы можно было изменять в панели администрирования, вы можете предпринять небольшую хитрость для определения языка браузера посетителя и задать константу WPLANG на основе полученной информации.

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

<?php 
// начало сессии 
session_start(); 
 
// если в URL-адресе есть параметр "lang"...  
if( isset( $_GET[ 'lang' ] ) ) { 
 
    // ...назначить переменную сессии WPLANG, исходя из параметра URL-адреса...     
    $_SESSION[ 'WPLANG' ] = $_GET[ 'lang' ]; 
 
    // ...и определить константу WPLANG как переменную сессии WPLANG 
    define( 'WPLANG', $_SESSION[ 'WPLANG' ] ); 
 
// если параметр "lang" в URL-адресе отсутствует...  
} else {
 
    // если переменная сессии WPLANG уже задана...
    if( isset( $_SESSION[ 'WPLANG' ] ) ) {
 
        // ... определить константу WPLANG как переменную сессии WPLANG
        define( 'WPLANG', $_SESSION[ 'WPLANG' ] );  
 
    // если переменная сессии WPLANG не задана...
    } else { 
         
 // установить константу WPLANG согласно коду языка по умолчанию (или оставить не заданной, если она вам не нужна)        
        define( 'WPLANG', 'tr_TR' ); 
             
    } 
} 
?>

После этого в файле wp-config.php, замените строку, где определяется WPLANG следующей строкой:

require_once( dirname( __FILE__ ) . '/wp-lang.php' );

Вуаля! Теперь Ваши посетители могут менять язык вашей темы и панели администрирования простым нажатием кнопки с параметром URL-адреса lang=fr_FR.

1. Назначение ваших API ключей WordPress.com в качестве константы с помощью WPCOM_API_KEY

Если вы используете плагин, который требует API ключи WordPress.com (например, Jetpack или Akismet) и ведете много сайтов на WordPress, это может быть немного утомительно каждый раз при установке плагина вводить API ключ WordPress.com.

Вот вам простой способ, как решить эту проблему. Вы можете определить свой ключ API в файле wp-config.php в качестве константы:

define( 'WPCOM_API_KEY', 'YourKeyHere' );

Проверьте, поддерживают ли эту функцию другие ваши любимые плагины. Такие плагины, как SlideDeck и Gravity Forms также поддерживают назначение API ключей в качестве констант.

2. Переназначение разрешенных HTML-тегов с помощью CUSTOM_TAGS

В WordPress есть функция wp_kses(), которая описывается в Кодексе WordPress следующим образом:
« … обеспечивает, чтобы в $string содержались только разрешенные названия HTML-элементов, названия атрибутов и значения атрибутов, а также только безопасные объекты HTML».

Вы можете редактировать правила фильтрации, например:

<?php 
 
function my_filter( $string ) {
 
    global $allowedtags;
    $allowedtags['img'] = array( 'src' => array () );
 
    return $string;
}
add_filter( 'pre_kses', 'my_filter' );
?>

Но если вам нужен полный контроль, то есть переписывание переменных $allowedposttags,$allowedtags и $allowedentitynames, вы можете сделать это, установив в файле wp-config.php значение true для константы CUSTOM_TAGS:

define( 'CUSTOM_TAGS', true );
$allowedposttags = array();
$allowedtags = array();
$allowedentitynames = array();

Ниже вы должны переназначить каждую переменную. Вы можете просто скопировать и вставить переменные в wp-includes/kses.php, а затем отредактировать добавленный код.

Заключение

Около двух лет назад я написал статью Осваиваем файл wp-config.php —11 полезных практик, и на то время она стала одной из самых популярных статей по WordPress.

А два года спустя я публику другую статью по wp-config, но на этот раз я решил поделиться с вами советами, о которых вы, возможно, даже не слышали.

Я надеюсь, она вам понравится.

А как насчет вас самих, известны ли вам какие-нибудь трюки с wp-config? Поделитесь своим опытом в комментариях! И если вам понравилась статья, не забудьте поделиться ссылкой!

Перевод статьи «New wp-config Tweaks You Probably Don’t Know» был подготовлен дружной командой проекта Сайтостроение от А до Я.