• Логика работы с таблицей 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


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

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

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