Свежие настройки wp-config, о которых вы, скорее всего, не слышали

Дата публикации:Апрель 25, 2014

Файл wp-config.php – самый любимый для одной части пользователей и самый отпугивающий для другой.

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

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

1. Задание дефолтной темы для новых WordPress сборок с помощью WP_DEFAULT_THEME

Допустим, вы – фрилансер, занимающийся веб-дизайном (или агентство по веб-дизайну), который использует собственную WordPress-тему для почти всех своих клиентов. Представьте себе, что вам не нужно всякий раз при создании новой сборки WordPress менять тему с «Twenty-очередной_номер» на «Классную базовую тему». Разве это не прекрасно?

Отлично, вы можете это сделать с помощью константы 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. Включение корзины для медиа-файлов с помощью MEDIA_TRASH

Возможно, вы тоже сталкивались с тем, что случайно удаляли важный медиа-файл. Я тоже делал это, пока не наткнулся на следующую константу:

define( 'MEDIA_TRASH', true );

Задайте ее, и вы больше никогда не столкнетесь с проблемами при удалении медиа-файлов – за малым исключением: если вы не отключали возможность корзины вообще путем задания константы EMPTY_TRASH_DAYS в «0».

Будьте аккуратны с этим.

4. Пропускаем директорию 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:

define( 'ALLOW_UNFILTERED_UPLOADS', true );

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

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

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

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

<?php 
// start the session 
session_start(); 
 
// if there's a "lang" parameter in the URL...  
if( isset( $_GET[ 'lang' ] ) ) { 
 
    // ...set a session variable named WPLANG based on the URL parameter...     
    $_SESSION[ 'WPLANG' ] = $_GET[ 'lang' ]; 
 
    // ...and define the WPLANG constant with the WPLANG session variable 
    define( 'WPLANG', $_SESSION[ 'WPLANG' ] ); 
 
// if there isn't a "lang" parameter in the URL...  
} else {
 
    // if the WPLANG session variable is already set...
    if( isset( $_SESSION[ 'WPLANG' ] ) ) {
 
        // ...define the WPLANG constant with the WPLANG session variable 
        define( 'WPLANG', $_SESSION[ 'WPLANG' ] );  
 
    // if the WPLANG session variable isn't set...
    } else { 
         
        // set the WPLANG constant to your default language code is (or empty, if you don't need it)        
        define( 'WPLANG', 'tr_TR' ); 
             
    } 
} 
?>

Теперь в файле wp-config.php меняем строку с определением WPLANG на следующую строку:

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

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

7. Задаем свой WordPress.com API-ключ как константу с помощью WPCOM_API_KEY

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

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

define( 'WPCOM_API_KEY', 'YourKeyHere' );

Проверьте, есть ли у других ваших плагинов данная возможность. Плагины, как SlideDeck и Gravity Forms, также поддерживают задание своих API-ключей в виде констант.

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

В WordPress существует функция wp_kses(), которая, как утверждает Кодекс, проверяет тот факт, что в $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, вы можете определить константу CUSTOM_TAGS в wp-config.php:

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

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

Источник: code.tutsplus.com

Поделиться

5 комментариев

  1. mihdan says:

    Данной инфы пока нет на http://codex.wordpress.org/Editing_wp-config.php. Спасибо

  2. 1blin says:

    Интересно. Навсегда избавиться от дефолтной темы — это же прекрасная новость! :)

  3. mihey says:

    Ооочень полезно. Большое Спасибо!

  4. uglion says:

    А как на мультисайте заставить создваться новым сайтам с нужной темой? Пробовал вставлять строку define(‘WP_DEFAULT_THEME’, ‘mh-magazine-lite’); и в wp-config.php и в wp-config-sample.php, а всё равно стандартая тема лезет.

    • Дмитрий Алёшин says:

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

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

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