Одна из самых часто используемых функций в WordPress (сужу по себе и по тем темам, с которыми мне приходилось работать). Странно, что я описываю её у себя на блоге только сейчас.
get_option( $option, $default = false )
Если опция с указанным названием не существует, и параметр $dafault
не указан, функция вернёт false
.
Если в базе данных опция хранится как сериализованная строка, то при возвращении её она будет раскодирована функцией maybe_unserialize().
Скалярные нестроковые значения будут преобразованы в строки, например:
false
значение опции будет возвращено как string(0) ""
, true
будет возвращено как string(1) "1"
,0
будет возвращено как string(1) "0"
,1
будет возвращено как string(1) "1"
;get_option()
либо возвращает false
, либо то, что указано в этом втором параметре.Под словом «стандартные» я подразумеваю те опции, которые уже существуют на чистом движке WordPress, большинство из них доступны через меню Настройки.
Я перечислил их ниже, предварительно разделив на категории. Для того, чтобы получить любую из них при помощи функции get_option()
, нужно всего лишь передать название нужной опции в функцию, например для получения админского email мы можем воспользоваться строчкой кода $email = get_option( 'admin_email' );
Название опции | Описание |
---|---|
admin_email (строка) | Административный адрес email. |
blogdescription (строка) | Краткое описание сайта. По умолчанию: __('Just another WordPress blog') Если эта строчка вызывает у вас вопросы, читайте мой урок про локализацию сайта. |
blogname (строка) | Название сайта. |
users_can_register (целое число) | Открыта ли регистрация на сайте. Может принимать значения 1 – открыта, 0 – закрыта (по умолчанию). |
default_role (строка) | Роль, присваиваемая новым пользователям при регистрации на сайте. По умолчанию – subscriber (подписчик). |
WPLANG (строка) | Язык сайта. В формате локали ru_RU , где ru – задаёт русский язык, а RU – страну. Например en_GB , где en – английский язык, а GB – страна в формате ISO 3166-1 Alpha-2 |
gmt_offset (целое число) | На сколько часов время сайта отличается от времени по Гринвичу (GMT), например для Москвы этот параметр равен 3 (GMT+3). |
timezone_string (строка) | Значение часового пояса сайта, например Europe/Moscow |
date_format (строка) | Формат даты, который по умолчанию будет использоваться на сайте такими функциями как the_date(), get_the_date(), the_modified_date() и т.д. По умолчанию F j, Y . Однако учтите, что дата будет переведена. Например F j, Y будет соответствовать 3 января, 2022 . |
time_format (строка) | Формат времени, который по умолчанию будет использоваться на сайте такими функциями, как the_time(), get_the_time(), the_modified_time() и т.д. По умолчанию g:i a , после перевода это будет например 12:44 пп (пп – после полудня). |
start_of_week (целое число) | Первый день недели. Может принимать значения:0 – Воскресенье1 – Понедельник2 – Вторник3 – Среда4 – Четверг5 – Пятница6 – Суббота |
siteurl (строка) | Адрес URL, куда установлен WordPress, можно получить функцией site_url(). |
home (строка) | Адрес URL непосредственно сайта, можно получить функцией home_url(). |
Название опции | Описание |
---|---|
use_smilies (целое число) | Преобразовывать смайлики наподобие :-) и :-P в картинки. 0 – нет, 1 – да (по умолчанию). |
use_balanceTags (целое число) | WordPress должен исправлять некорректный XHTML-код автоматически. 0 – нет (по умолчанию), 1 – да. |
default_category (целое число) | Рубрика по умолчанию, которая будет присваиваться постам, если в них не добавлена ни одна рубрика. Также эту рубрику нельзя удалить. |
default_post_format (строка) | Формат записей по умолчанию. |
mailserver_url (строка) | Почтовый сервер для публикации через e-mail. |
mailserver_port (целое число) | Порт |
mailserver_login (строка) | Логин |
mailserver_pass (пароль) | Пароль |
default_email_category (целое число) | Рубрика по умолчанию для публикации по почте. |
ping_sites | Сервисы обновления. |
Название опции | Описание |
---|---|
show_on_front (строка) | Что выбрано в качестве отображения на главной странице сайта, может принимать всего два значения: posts (ваши последние записи), page (статическая страница). |
page_on_front (целое число) | ID страницы для отображения на главной странице. |
page_for_posts (целое число) | ID страницы, которая будет являться страницей блога. |
posts_per_page (целое число) | Сколько постов отображать на одной странице блога. Также является значением по умолчанию для вывода любых постов в циклах. |
posts_per_rss (целое число) | Сколько постов отображать в RSS. |
rss_use_excerpt (строка) | В RSS ленте отображать отрывок или полный текст. |
blog_public (целое число) | Попросить поисковые системы не индексировать сайт, 1 – попросить, 0 – не просить (по умолчанию). Подробнее об этой опции. |
Название опции | Описание |
---|---|
default_pingback_flag (целое число) | Пытаться оповестить блоги, упоминаемые в статье. 1 – да (по умолчанию), 0 – нет. |
default_ping_status (строка) | Разрешить оповещения с других блогов (уведомления и обратные ссылки) для новых записей. open – да (по умолчанию), closed – нет. |
default_comment_status (строка) | Разрешить оставлять комментарии к новым записям. open – да (по умолчанию), closed – нет. |
require_name_email (целое число) | Автор комментария должен указать имя и e-mail. 1 – да (по умолчанию), 0 – нет. |
comment_registration (целое число) | Пользователи должны быть зарегистрированы и авторизованы для комментирования. 1 – да, 0 – нет (по умолчанию). |
close_comments_for_old_posts (целое число) | Автоматически закрывать обсуждение статей старше количества дней, указанных в следующей опции. 1 – да, 0 – нет (по умолчанию). |
close_comments_days_old (целое число) | Количество дней, по прошествии которых нужно закрывать комментарии к посту. Работает в паре с предыдущей опцией. |
show_comments_cookies_opt_in (целое число) | Показывать галочку разрешения установки куки для авторов комментариев. 1 – да (по умолчанию), 0 – нет. |
thread_comments (целое число) | Разрешить древовидные комментарии. 1 – да (по умолчанию), 0 – нет. |
thread_comments_depth (целое число) | Количество уровней древовидных комментариев (от 2 до 10). |
page_comments (целое число) | Включить пагинацию для комментариев. 1 – да, 0 – нет (по умолчанию). |
comments_per_page (целое число) | Количество комментариев, отображаемых на одной странице при включенной пагинации. |
default_comments_page (строка) | Нужно ли сначала отображать последнюю страницу (значение newest , по умолчанию) при включенной пагинации или первую (oldest ). |
comment_order (строка) | Сами же комментарии при включенной пагинации должны выводиться свежие наверху страницы (desc ), или же более старые наверху страницы (asc , по умолчанию). |
comments_notify (целое число) | Нужно ли уведомлять администратора при появлении нового комментария. 1 – да (по умолчанию), 0 – нет. |
moderation_notify (целое число) | Нужно ли уведомлять администратора при появлении комментария, ожидающего модерации. 1 – да (по умолчанию), 0 – нет. |
comment_moderation (целое число) | Должен ли каждый комментарий быть одобрен вручную? 1 – да, 0 – нет (по умолчанию). |
comment_previously_approved (целое число) | Должны ли комментарии пользователя одобряться автоматически, если у него есть хотя бы один вручную одобренный комментарий. 1 – да (по умолчанию), 0 – нет. |
comment_max_links (целое число) | Количество ссылок в тексте комментария, при наличии которых он по-любому отправится на модерацию. По умолчанию 2 . |
moderation_keys (строка) | Если комментарий содержит какие-либо из этих слов в своём тексте, имени автора, URL, адресе e-mail или IP, то поместить его в очередь на модерацию. Каждое слово или IP с новой строки. |
disallowed_keys (строка) | сли комментарий содержит какие-либо из этих слов в своём тексте, имени автора, URL, адресе e-mail или IP, то он будет удалён в корзину. Каждое слово или IP задается с новой строки. |
show_avatars (целое число) | Нужно ли отображать аватары пользователей. 1 – да (по умолчанию), 0 – нет. |
avatar_rating (строка) | Максимальный рейтинг аватаров, может принимать значения: G , PG , R , X . |
avatar_default (строка) | Что отображать, если у пользователя нет аватара,mystery : (default) Человек-загадкаblank : Пустойgravatar_default : Логотип Gravataridenticon : Identicon (Автоматически)wavatar : Wavatar (Автоматически)monsterid : MonsterID (Автоматически)retro : Ретро (Автоматически) |
Название опции | Описание |
---|---|
thumbnail_size_w (целое число) | Ширина миниатюры, по умолчанию 150. |
thumbnail_size_h (целое число) | Высота миниатюры, по умолчанию 150. |
thumbnail_size_crop (целое число) | Обрезать миниатюру точно по размерам. 1 – да (по умолчанию), 0 – нет. |
medium_size_w (целое число) | Ширина среднего размера, по умолчанию 300. |
medium_size_h (целое число) | Высота среднего размера, по умолчанию 300. |
large_size_w (целое число) | Ширина крупного размера, по умолчанию 1024. |
large_size_h (целое число) | Высота крупного размера, по умолчанию 1024. |
upload_path (строка) | Содержит название директории или путь относительно директории установки WordPress, где следует хранить медиафайлы. По умолчанию этот параметр пустой и медиафайлы хранятся в wp-content/uploads. |
Название опции | Описание |
---|---|
permalink_structure (строка) | Структура постоянных ссылок. Например я использую /%category%/%postname%.html у себя на сайте. |
category_base (строка) | Префикс для рубрик (т.е слово, которое будет присутствовать в урлах рубрик, после домена сайте и перед ярлыком самой рубрики), по умолчанию category , о том, как его удалить, читайте тут. |
tag_base (строка) | Префикс для меток, по умолчанию tag . |
Название опции | Описание |
---|---|
template | Ярлык текущей активной темы, или иначе говоря, название её директории. Если используется дочерняя тема, то в этом параметре будет храниться ярлык родительской темы. Например, если путь к вашей теме wp-content/themes/truemisha/ , то значение опции будет truemisha . |
stylesheet | Ярлык текущей активной темы. |
active_plugins | Содержит массив активных плагинов на сайте. |
Выше я уже перечислил несколько все опции WordPress, поэтому, вам необязательно проделывать все эти шаги, если только это не какая-то кастомная опция, добавленная либо в коде, либо через произвольную страницу настройки.
В этом примере мы узнаем название любой опции и затем выведем её.
Прежде всего, вы можете найти её в таблице wp_options
(префикс wp_
кстати может отличаться) в базе данных. Для этого вам понадобится открыть phpMyAdmin, выбрать нужную нам базу даных и перейти в таблицу опций wp_options
.
В целом она довольно очевидная и особых вопросов по ней быть не должно, уже на скриншоте вы можете заметить некоторые из стандартных опций WordPress, описанных выше.
Выведем сразу же описание блога:
echo get_option( 'blogdescription' ); // Just another WordPress site
Если у вас нет доступа к базе данных, или же вы не умеете заходить в phpMyAdmin, то есть и другой путь.
Другой путь заключается в использовании правой кнопки мыши и контекстного меню браузера :)
Заходим на страницу настроек, где находится интересующая нас опция, например у меня это банально Настройки > Общие, кликаем на интересующем вас поле правой кнопкой и выбираем Проинспектировать элемент (это в браузере Google Chrome, в других может и отличаться).
Выводим опцию!
echo get_option( 'default_role' ); // subscriber
Иногда приходится отправлять письма в коде функцией wp_mail(), да даже если мы говорим об обычной кастомной форме обратной связи.
В таком случае код может выглядеть так:
if( wp_mail( get_option( 'admin_email' ), 'Какая-то тема', 'Какое-то сообщение' ) ) { // успешно отправлено на email администратора из Настройки > Общее }
Пара слов про параметр $default
.
// получаем какую-либо опцию, которой не существует в базе данных $value = get_option( 'true_not_existed_value' ); var_dump( $value ); /* выводится false */ // снова получаем какую-либо опцию, которой не существует в базе данных, но с параметром $default $value = get_option( 'true_not_existed_value', 'привет' ); var_dump( $value ); /* выводится привет */
Ниже описаны хуки, которые присутствуют внутри функции get_option()
. Если вы понятия не имеете, что такое хуки и как их использовать, то этот видеоурок специально для вас.
Этот хук позволяет модифицировать значение любой опции ещё до того, как её значение будет получено из базы данных.
Обратие внимание, что название опции является частью названия хука!
$pre = apply_filters( "pre_option_{$option}", false, $option, $default );
$default
.В качестве примера давайте подменим какую-либо из опций. Как вариант, мы можем хукнуть опцию активных плагинов active_plugins
.
add_filter( 'pre_option_active_plugins', 'true_deactivate_all_plugins' ) function true_deactivate_all_plugins( $plugins ){ return array(); // возвращаем пустой массив, т.е. ни один из плагинов не будет активным });
Кстати, мы не можем возвращать этим фильтром false
, потому что тогда он будет проигнорирован. Но обратите внимание, что тут у нас нет доступа к текущему значению опции, потому что фильтр срабатывает ещё до её получения. Поэтому у нас не получится отключить какой-то определённый плагин. Иначе рекомендую воспользоваться хуком option_{$option}.
Позволяет отфильтровать значение определённой опции перед самым её возвращением функцией.
return apply_filters( "option_{$option}", maybe_unserialize( $value ), $option );
В качестве примера попробуем тот же самый с отключением плагинов, про который я рассказывал в описании хука pre_option_{$option}.
Ну что же, пришло время отключить определённый плагин. Для того, чтобы это сделать, возможно, что вам будет полезно узнать идентификатор плагина, который хотим отключить. Легче всего это сделать, распечатав где-нибудь весь массив с активными плагинами:
print_r( get_option( 'active_plugins' ) );
Теперь отключаем! К примеру Cyr-To-Lat.
add_filter( 'option_active_plugins', 'true_deactivate_plugin' ) function true_deactivate_plugin( $plugins ){ // тут некоторая хитрость при удалении плагина из массива, потому что они в ассоциативном массиве с цифровыми индексами while ( false !== ($key = array_search( 'cyr2lat/cyr-to-lat.php', $plugins ) ) ) { unset( $plugins[ $key ] ); } return $plugins; } );
return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
$default
.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.