Статьи

Понимание и работа с таблицей параметров WordPress

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

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

Таблица параметров хранит данные другого типа из других таблиц: вместо хранения данных о контенте вашего сайта, он хранит данные о самом сайте. Данные записываются в таблицу параметров с помощью API параметров или API параметров , которые состоят из набора функций, используемых для добавления, обновления и удаления данных из этой таблицы.

Вы можете добавлять значения к существующим параметрам, а также добавлять новые записи в таблицу, когда хотите создать новые параметры.

В этом уроке я рассмотрю различные аспекты таблицы параметров и то, как вы взаимодействуете с ней:

  • Доступ к таблице wp_options
  • Структура таблицы wp_options
  • wp_options таблицы wp_options
  • Параметры API
  • API настроек

Я просто дам обзор API и того, как они взаимодействуют с таблицей опций — если вы хотите узнать больше, прочитайте серию статей Тома Макфарлина об API настроек .

Поскольку в таблице wp_options хранятся данные, связанные с настройкой и администрированием сайта в целом, доступ к нему ограничен. Чтобы иметь возможность изменять настройки и параметры, пользователям необходимо иметь возможность manage_options . Единственная роль пользователя по умолчанию с этой возможностью — роль администратора (а в Multisite — роль администратора сети).

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

  • экраны настроек по умолчанию
  • экраны настроек темы
  • экраны настроек и опций, которые вы добавляете через плагины

Есть несколько опций, встроенных в WordPress — вы можете увидеть все из них в Справочнике по опциям. Но вы также можете создать свой собственный.

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