Файл wp-config.php – самый любимый для одной части пользователей и самый отпугивающий для другой.
Существуют бесчисленное множество советов и подсказок в разных статьях, связанных с wp-config; однако данная статья будет несколько отличаться от всех них. В данной статье мы познакомим вас с восемью новыми приемами wp-config, которые менее известны, нежели функциональность, связанная с отключением ревизий, увеличением лимита памяти и т.д.
Не забудьте сделать бэкап вашей сборки! Советы в данной статье не меняют каких-либо значений в базе данных и не затрагивают никаких файлов (кроме wp-config, естественно), поэтому вы можете просто загрузить себе копию вашего файла wp-config.php, чтобы впоследствии вернуться к начальному варианту, если вдруг что-то пойдет не так. Лучше предохраниться, чем потом кусать локти – активные бэкапы всегда хороший вариант!
- 1. Задание дефолтной темы для новых WordPress сборок с помощью WP_DEFAULT_THEME
- 2. Отключение возможности автоматического обновления в WordPress с помощью AUTOMATIC_UPDATER_DISABLED
- 3. Включение корзины для медиа-файлов с помощью MEDIA_TRASH
- 4. Пропускаем директорию wp-content в ходе обновления с помощью CORE_UPGRADE_SKIP_NEW_BUNDLED
- 5. Разрешаем загрузки любых файлов в WordPress для администраторов с помощью ALLOW_UNFILTERED_UPLOADS
- 6. Динамическое определение WPLANG для многоязычных сайтов
- 7. Задаем свой WordPress.com API-ключ как константу с помощью WPCOM_API_KEY
- 8. Переопределение разрешенных HTML-тегов с помощью CUSTOM_TAGS
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
Данной инфы пока нет на http://codex.wordpress.org/Editing_wp-config.php. Спасибо
Интересно. Навсегда избавиться от дефолтной темы — это же прекрасная новость! :)
Ооочень полезно. Большое Спасибо!
А как на мультисайте заставить создваться новым сайтам с нужной темой? Пробовал вставлять строку define(‘WP_DEFAULT_THEME’, ‘mh-magazine-lite’); и в wp-config.php и в wp-config-sample.php, а всё равно стандартая тема лезет.
Возможно, что для мультисайтов эта константа вообще не работает.