Фильтр option_(option_name)
в WordPress позволяет изменять значения настроек перед их выводом. Этот фильтр полезен, когда вы хотите динамически модифицировать значение определённой опции (настройки), сохранённой в базе данных WordPress, без изменения самой настройки в админке.
Каждая опция в WordPress хранится в таблице базы данных wp_options
, и для каждой из этих опций можно задать фильтр, который изменит значение при его получении с помощью функции get_option()
.
Использование фильтра option_(option_name)
Формат фильтра:
add_filter( 'option_option_name', 'custom_option_value' );
function custom_option_value( $value ) {
// Изменяем значение настройки
return 'Новое значение';
}
Где:
option_option_name
— это имя фильтра, гдеoption_name
заменяется на имя настройки, значение которой вы хотите изменить.$value
— текущее значение настройки.
Пример: изменение опции blogname
Рассмотрим пример, когда нужно изменить название сайта (blogname
), но только при выводе через функцию get_option()
:
add_filter( 'option_blogname', 'change_blogname' );
function change_blogname( $value ) {
// Меняем название сайта на кастомное
return 'Мой кастомный сайт';
}
В данном случае, когда функция get_option( 'blogname' )
будет вызвана, вместо сохранённого значения будет возвращено 'Мой кастомный сайт'
.
Пример с динамическим значением
Вы можете использовать этот фильтр для более сложных изменений, например, подставлять динамическое значение в зависимости от условий:
add_filter( 'option_blogdescription', 'dynamic_blogdescription' );
function dynamic_blogdescription( $value ) {
// Если пользователь авторизован, показываем одно описание
if ( is_user_logged_in() ) {
return 'Добро пожаловать, ' . wp_get_current_user()->display_name . '!';
}
// Для остальных пользователей возвращаем стандартное описание
return $value;
}
Теперь, когда аутентифицированные пользователи заходят на сайт, описание сайта изменяется в зависимости от имени текущего пользователя.
Пример: модификация кастомных опций
Фильтр option_(option_name)
работает не только с предустановленными опциями WordPress, но и с кастомными опциями, созданными разработчиками. Предположим, у вас есть настройка с именем custom_welcome_message
, которая хранится в базе данных:
add_filter( 'option_custom_welcome_message', 'customize_welcome_message' );
function customize_welcome_message( $value ) {
// Меняем приветственное сообщение только для администраторов
if ( current_user_can( 'manage_options' ) ) {
return 'Добро пожаловать, администратор!';
}
// Для остальных оставляем стандартное значение
return $value;
}
Заключение
Фильтр option_(option_name)
предоставляет разработчикам гибкость в управлении значениями настроек. Вы можете динамически изменять вывод опций без необходимости редактировать их в админке, что делает этот фильтр полезным для настройки поведения сайта в зависимости от различных условий.