Работа с данными в WordPress. Часть 8: работа с таблицей опций в WordPress
В прошлых статьях серии мы рассмотрели таблицы в базе данных WordPress и отношения между ними.
В этой части мы рассмотрим таблицу, которая несколько отличается от всех остальных – wp_options. Как вы можете видеть на диаграмме ниже, это единственная таблица, которая расположена отдельно.
Таблица опций хранит в себе совершенно другой тип данных, отличающийся от остальных таблиц: вместо хранения данных о контенте вашего сайта она хранит в себе данные о самом сайте. Данные записываются в таблицу опций с помощью Options API или Settings API, которые состоят из набора функций, используемых для добавления, обновления или удаления данных из данной таблицы.
Вы можете добавлять значения к существующим опциям, вы можете добавлять новые записи в таблицу, если вы хотите создать новые опции.
В данном руководстве я рассмотрю разные аспекты таблицы опций, а также посмотрю на то, как взаимодействовать с ней:
- Доступ к таблице wp_options
- Структура таблицы wp_options
- Заполнение таблицы wp_options
- Options API
- Settings API
Я приведу краткий обзор этих API и покажу, как взаимодействовать с таблицей опций.
Доступ к таблице wp_options
Поскольку таблица wp_options хранит в себе данные, связанные с установкой сайта и его управлением в целом, доступ к ней ограничен. Чтобы менять настройки и опции, пользователи должны иметь возможность manage_options. Единственная стандартная пользовательская роль с данной возможностью – роль администратора (в мультисайтах: роль администратора сети).
Это означает следующее: если вам нужно добавить опции, к которым должен иметься доступ у других пользовательских ролей, вам нужно будет присвоить к ним возможность manage_options. Это достаточно рискованный шаг, поэтому обязательно обдумайте все его последствия!
Структура таблицы wp_options
Таблица опций имеет структуру, схожую с тремя таблицами метаданных. Она включает в себя четыре поля:
- option_ID
- option_name
- option_value
- autoload – определяет, загружены ли опции автоматически при каждом обновлении страницы; по умолчанию yes для отдельного сайта и no для мультисайтов.
Каждая запись в поле option_name будет представлять собой уникальное значение: если вы добавите более одного значения к опции, WordPress сохранит их в виде массива в поле option_value. Прекрасный пример этого: опция active_plugins, которая хранит массив плагинов, активированных на сайте.
При добавлении, редактировании или удалении данных в таблице wp_options вы должны всегда указывать option_name, что я покажу дальше в руководстве.
Заполнение таблицы wp_options
Таблица wp_options заполняется из следующих источников:
- Стандартная страница параметров
- Экран опций темы
- Экраны опций и параметров, добавленные с помощью плагинов
Есть много опций, встроенных в WordPress – вы можете видеть их в описании опций. Однако вы всегда можете создать свои собственные опции.
Чтобы создать новые опции в теме или плагине, вам нужно будет использовать Options API или Settings API. Я раскрою их более подробно чуть ниже.
Использование Options API
Options 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 |
add_site_option() |
$option , $value |
Похоже на add_option() , но добавляет опции для всей сети в мультисайтах (т.е. опция хранится в таблице wp_options , а не в wp_XX_options , где XX – это ID сайта). $autoload не входит в опции сайта, не работает в мультисайтах и не может быть перезаписана. |
delete_site_option() |
$option |
Аналогична delete_option() , но работает во всей сети в мультисайтах. |
get_site_option() |
$option , $default , $use_cache |
Аналогична get_option() , но возвращает опции для всей сети в мультисайтах. |
update_site_option() |
$option , $value |
Аналогична update_option() , но работает для всей сети в мультисайтах. |
Обратите внимание, что при создании опций либо через Options API, либо через Settings API, вы можете создавать записи без значений в поле option_value. Это дает возможность администраторам сайтам заполнять это поле позже.
Использование Settings API
Наряду с Options API, вы можете также использовать Settings API для взаимодействия с данными в таблице wp_options. Settings API позволяет вам создавать параметры, которые могут использовать администраторы сайта для добавления или обновления данных в таблице опций – к вашим опциям будет добавлен пользовательский интерфейс.
Settings API более мощный, чем Options API, поэтому я не смогу его в полной мере здесь раскрыть. У него имеется три базовых элемента:
- Параметр (данные из таблицы wp_options)
- Поле (которое используется для добавления или редактирования данных)
- Секция параметров, которая представляет собой группу связанных полей
Две функции в Settings API, которые взаимодействуют напрямую с таблицей wp_options:
Функция | Параметры | Примечания |
---|---|---|
register_setting() |
$option_group , $option_name , $sanitize_callback |
Параметр $option_name связан с полем option_name в таблице wp_options ; остальные параметры взаимодействуют с другими функциями в Settings API |
unregister_setting() |
$option_group , $option_name , $sanitize_callback |
Отменяет регистрацию параметра в таблице wp_options – обычно используется с хуками деактивации в темах или плагинах. |
Эти функции не добавляют значений к опциям в таблице wp_options, однако они создают параметры, которые могут потом получать значения, добавленные к ним через другие функции в Settings API.
Заключение
Таблица wp_options выделяется среди остальных таблиц базы данных WordPress тем, что она не имеет отношений с другими таблицами. Это потому, что она хранит данные о сайте или сети, а не о контенте. Чтобы взаимодействовать с таблицей опций, вы можете использовать функции из Options API или Settings API. Также вы можете использовать функции, которые добавляют данные для всей сети в мультисайтовых сборках.
В заключительной части этой серии я рассмотрю мультисайты, поскольку они используют дополнительные таблицы БД, которые не были раскрыты ранее в этой серии.
Источник: code.tutsplus.com