Логика работы с таблицей wp_options в WordPress

Работа с базой данныхКомментариев нет

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

working-with-data-in-wordpress-introduction-database-tables

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

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

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

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

Я всего лишь дам обзор API (интерфейс программирования приложений) и покажу, как они взаимодействуют с таблицей опций; если вы хотите изучить это глубже, прочитайте серии, посвященные API настроек Тома МакФалина.

Доступ к таблице wp_options

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

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

Структура таблицы wp_options

Таблица опций имеет схожую структуру с тремя таблицами метаданных. У нее четыре поля:

  • Option_ID (ID опции)
  • Option_name (Имя опции)
  • Option_value (Значение опции)
  • Autoload – указывает, загружается ли опция автоматически, на каждой загрузке страницы – по умолчанию имеет значение «да» при установке одного сайта, и значение «нет» в Мультисайте.

Каждая запись в поле option_name должна иметь уникальное значение: если вы добавляете более одного значения для опции, WordPress хранит это в массиве, в поле option_value. Хорошим примером является опция activate_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
Add_site_option() $option,$value Аналогично add_option(), но добавляет опцию для всей сети в Мультисайте (т.е. параметр хранится в таблице wp_options, а не в таблице wp_XX_options, где ХХ – ID сайта), $autoload не включена, как опция сайта, не загружается в Мультисайте и это не может быть перезаписано.
Delete_site_option() $option То же самое, что и delete_option(), но работает для всей сети в Мультисайте
Get_site_option() $option,$default,$use_cache Аналогично get_option(), но извлекает опцию для всей сети в Мультисайте
Update_site_option() $option,$value Идентично 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 ссылается на поле option_name в таблице wp_options; другие параметры взаимодействуют с другими функциями в API настроек.
unregister_setting () $option_group, $option_name, $sanitize_callback Вычеркивает настройки из списка в таблице wp_options; обычно используется с хуками деактивации для тем и плагинов.

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

Итог

Таблица wp_options уникальна среди остальных таблиц базы данных WordPress тем, что она не использует связи с какой-либо из таблиц. Это из-за того что в ней хранятся данные о сайте или о сети, а не о контенте. Чтобы взаимодействовать с таблицей опций, вы можете использовать функции в API параметров или API настроек, а также функции, добавляющие данные по всей сети в пределах Мультисайта.

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

 

Источник: code.tutsplus.com


Будь первым кто прокомментирует статью.

Добавить комментарий

Войти с помощью: