В предыдущих частях этой серии мы рассматривали таблицы в базе данных WordPress и отношения между ними.
В этой части я расскажу о таблице, которая отличается от других — таблице wp_options
. Как видно из диаграммы ниже, это единственная таблица, которая расположена отдельно:
Таблица параметров хранит данные другого типа из других таблиц: вместо хранения данных о контенте вашего сайта, он хранит данные о самом сайте. Данные записываются в таблицу параметров с помощью API параметров или API параметров , которые состоят из набора функций, используемых для добавления, обновления и удаления данных из этой таблицы.
Вы можете добавлять значения к существующим параметрам, а также добавлять новые записи в таблицу, когда хотите создать новые параметры.
В этом уроке я рассмотрю различные аспекты таблицы параметров и то, как вы взаимодействуете с ней:
- Доступ к таблице
wp_options
- Структура таблицы
wp_options
-
wp_options
таблицыwp_options
- Параметры API
- API настроек
Я просто дам обзор API и того, как они взаимодействуют с таблицей опций — если вы хотите узнать больше, прочитайте серию статей Тома Макфарлина об API настроек .
Доступ к таблице wp_options
Поскольку в таблице wp_options
хранятся данные, связанные с настройкой и администрированием сайта в целом, доступ к нему ограничен. Чтобы иметь возможность изменять настройки и параметры, пользователям необходимо иметь возможность manage_options
. Единственная роль пользователя по умолчанию с этой возможностью — роль администратора (а в Multisite — роль администратора сети).
Это означает, что если вам нужно добавить опции, к которым имеют доступ другие роли пользователей, вам придется назначить manage_options
возможность manage_options
. Это сопряжено с риском, поэтому делайте это, только если вы уверены!
Структура таблицы wp_options
Таблица параметров имеет структуру, аналогичную трем таблицам метаданных. Имеет четыре поля:
-
option_ID
-
option_name
-
option_value
-
autoload
— указывает, будет ли опция автоматически загружаться при каждой загрузке страницы; по умолчанию —yes
в одной установке сайта иno
в Multisite.
Каждая запись в поле option_name
будет уникальным значением: если вы добавите более одного значения в опцию, WordPress option_value
в массиве в поле option_value
. Хорошим примером этого является опция active_plugins
, которая хранит массив плагинов, активированных на вашем сайте.
При добавлении, редактировании или удалении данных в таблице wp_options
вы всегда должны указывать option_name
, как я покажу позже в этом руководстве.
Заполнение таблицы wp_options
Таблица wp_options
заполняется из одного из трех источников:
- экраны настроек по умолчанию
- экраны настроек темы
- экраны настроек и опций, которые вы добавляете через плагины
Есть несколько опций, встроенных в WordPress — вы можете увидеть все из них в Справочнике по опциям. Но вы также можете создать свой собственный.
Для создания новых опций в вашей теме или плагине вы должны использовать API настроек или API настроек. Я расскажу об этом более подробно ниже.
Использование параметров API
API параметров состоит из восьми функций, которые позволяют добавлять, получать, обновлять или удалять параметры:
функция | параметры | Примечания |
---|---|---|
add_option() |
$option , $value , $deprecated , $autoload |
Требуется только $option . Если существует существующая запись с вашим параметром $option в качестве значения его поля option_name , WordPress добавит ваше $value в массив в поле option_value для этой записи, в противном случае будет создана новая запись. |
delete_option() |
$option |
Удаляет все поля для этой опции |
get_option() |
$option , $default |
$default (необязательно) — это значение по умолчанию, которое возвращается, если значение не сохранено для параметра в базе данных. |
update_option() |
$option , $new_value |
$new_value — это значение, которое будет option_value поле option_value |
add_site_option() |
$option , $value |
Аналогичен add_site_option() но добавляет параметр для всей сети в мультисайте (это означает, что параметр хранится в таблице wp_options а не в таблице wp_XX_options где XX — идентификатор сайта). $autoload не включен, так как параметры сайта не загружаются в Multisite, и это не может быть переопределено. |
delete_site_option() |
$option |
То же, что delete_option() но работает в сети для нескольких сайтов. |
get_site_option() |
$option , $default , $use_cache |
Аналогичен get_option() но извлекает общесетевую опцию в Multisite. |
update_site_option() |
$option , $value |
Идентичен update_option() но работает в сети для нескольких update_option() . |
Обратите внимание, что при создании параметров с помощью API параметров или API параметров можно создавать записи без значения в поле option_value
. Это позволяет администраторам сайта заполнить это поле позже.
Использование API настроек
Помимо API параметров, вы также можете использовать API настроек для взаимодействия с данными в таблице wp_options
. API настроек позволяет вам создавать настройки, которые администраторы сайта могут использовать для добавления или обновления данных в таблице опций — он добавляет пользовательский интерфейс к вашим опциям.
API настроек имеет больше возможностей, чем API настроек, поэтому я не буду подробно останавливаться на этом, но по сути он состоит из трех элементов:
- настройка (данные в таблице
wp_options
) - поле (которое используется для добавления и редактирования данных)
- раздел настроек, который представляет собой группу связанных полей.
Две функции в API настроек, которые напрямую взаимодействуют с таблицей wp_options
:
функция | параметры | Примечания |
---|---|---|
register_setting() |
$option_group , $option_name , $sanitize_callback |
Параметр $option_name ссылается на поле wp_options таблице wp_options ; другие параметры взаимодействуют с другими функциями в API настроек |
unregister_setting() |
$option_group , $option_name , $sanitize_callback |
Отменяет регистрацию настроек из таблицы wp_options — обычно используется с хуками деактивации для тем или плагинов. |
Эти функции не добавляют значения к параметрам в таблице wp_options
, но они создают параметры, которые могут иметь значения, добавленные к ним через другие функции в API настроек.
Резюме
Таблица wp_options
уникальна среди таблиц базы данных WordPress в том wp_options
что она не разделяет отношения ни с одной из других таблиц. Это связано с тем, что в нем хранятся данные о сайте или сети, а не контент. Чтобы взаимодействовать с таблицей параметров, вы можете использовать функции в API параметров или API параметров, а также использовать функции, которые добавляют данные по всей сети в многосайтовой изоляции.
В заключительной части этой серии статей я рассмотрю Multisite, так как он использует несколько дополнительных таблиц базы данных, которые еще не были рассмотрены в этой серии, а также создает несколько экземпляров каждой из базовых таблиц, по одной для каждого сайта.