Работа с данными в WordPress. Часть 8: работа с таблицей опций в WordPress

В прошлых статьях серии мы рассмотрели таблицы в базе данных WordPress и отношения между ними.

В этой части мы рассмотрим таблицу, которая несколько отличается от всех остальных — wp_options. Как вы можете видеть на диаграмме ниже, это единственная таблица, которая расположена отдельно.

introduction-database-tables

Таблица опций хранит в себе совершенно другой тип данных, отличающийся от остальных таблиц: вместо хранения данных о контенте вашего сайта она хранит в себе данные о самом сайте. Данные записываются в таблицу опций с помощью 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

Блог про WordPress
Добавить комментарий

Получать новые комментарии по электронной почте.