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