Меню

api настройки тем wordpress

Полное руководство по настройке WordPress API, часть 1: введение

Содержание цикла статей «Полное руководство по настройке WordPress API» :

Сейчас самое время становиться профессиональным разработчиком под платформу WordPress. Будь то разработка по заказу клиента или создание тем и плагинов, сегодня есть спрос на все, что касается данной тематики.

WordPress имеет отлично написанную документацию по API для разработчиков вне зависимости от уровня их подготовки. Но это не отменяет необходимость накопления практического опыта в сфере разработки под данную CMS.

Как и в большинстве случаев в сфере веб-разработки, если что-то работает, то это не значит, что это сделано абсолютно правильно. Поэтому мы, как разработчики и своего рода ремесленники, озадачены тем, чтобы быть уверенными в том, что то, чем мы занимаемся, делается правильно.

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

И мы хотим это остановить.

В данной серии статей, мы собираемся глубоко заглянуть в сердце WordPress Settings API . Мы разберемся, в чем состоит проблематика вопроса и почему это важно, а также научимся правильно использовать данный API.

Наша основная цель состоит в том, чтобы научиться грамотно настраивать Settings API (Программный интерфейс настроек, далее Settings API) вне зависимости от уровня вашей подготовки. К концу серии, вы получите глубокое, целостное понимание и разберете практические примеры того, как на практике правильно использовать этот API.

Чтобы успешно пройти все этапы, нам нужно начать с абсолютного нуля. До написания какого-либо кода и разбора примеров, нам необходимо познакомиться с Settings API – узнать что это, и для чего предназначено.

Определение термина «Settings API»


По своей сути, Settings API это набор функций, предоставляемый WordPress, который упрощает процесс создания меню, страниц настроек, а также сохранения, валидации и извлечения введенных пользователем данных.

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

Почему следует использовать Settings API?

После того, как мы выяснили, что такое Settings API, давайте посмотрим, почему же мы собираемся его использовать вместо собственноручно написанных процедур обработки пользовательского ввода, сериализации (процесса превращения какой-либо структуры данных в последовательность битов) и валидации.

Взаимодействие с ядром WordPress

Settings API разработан создателями платформы WordPress, чтобы упростить создание расширений. Поэтому, вполне логично использовать функции, предоставляемые этим API.

Конечно, можно обойти Settings API и, методом грубой силы, реализовать собственный функционал, и никто не сможет этому помешать, однако это требует лишней работы, и чревато несоблюдением рекомендаций команды разработчиков ядра WordPress, что в конечном итоге может привести к ошибкам в панели управления.

Использование инструмента, созданного разработчиками для разработчиков, гарантирует, что мы будем взаимодействовать с ядром правильным путем.

Бесплатные стандартные возможности


Использование Settings API это не только гарантия того, что разработка будет вестись правильным способом. Также, это уверенность в том, что интерфейс пользователя будет следовать традициям платформы, а данные будут обрабатываться механизмами, аналогичными тем, которые используются в самом WordPress. Кроме того, это может сэкономить кучу времени.

Читайте также:  настройка wifi на даче

Когда вы начинаете создавать свои интерфейсы по тем же принципам, которые используются в WordPress и будете использовать в своей работе Settings API, ваши продукты будут получаться тесно интегрированными с CMS.

Это означает, что когда пользователи будут работать с вашими творениями, то почувствуют себя в своей тарелке – им все будет понятно. У них будет возникать ощущение, что они изменяют системное дополнение, созданное разработчиками WordPress.

По правде говоря, использование «родных» стилей WordPress не касается напрямую Settings API и относится немного к другой теме, но такой аспект Settings API, как создание страниц меню, предполагает использование нативных стилей WordPress.

Разве нет смысла в том, чтобы придерживаться единого стиля?

Более безопасно, более устойчиво


Используя преимущества встроенных в WordPress функций, вы можете быть уверены, что процедуры сохранения, извлечения и валидации будут проходить без проблем. Settings API предоставляет множество функций, использование которых безопасно для функционирования ядра.

В конце концов, Settings API подчиняется тем же правилам и принципам, что и WordPress API. Также, при обновлении CMS, функции Settings API также будут устаревать. Вам нужно будет какое-то время, чтобы обновить ваш проект ДО того, как несовместимость скажется на его работе.

Что дальше?


Теперь, вы должны иметь общее представление том, что такое Settings API и почему стоит использовать его при создании тем и плагинов.

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

  • Меню, секции и закладки;
  • Регистрация настроек секций;
  • Базовые элементы ( input, textarea, select, radio button ,и checkbox );
  • Простой рабочий пример.

К концу цикла, у вас будут все необходимые знания, чтобы создать полноценный продукт для платформы WordPress.

Данная публикация представляет собой перевод статьи « The Complete Guide To The WordPress Settings API, Part 1: What It Is, Why It Matters » , подготовленной дружной командой проекта Интернет-технологии.ру

источник

API настроек (опций)

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

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

Заметка: все post данные формы должны отправляться на страницу wp-admin/options.php . Пользователи должны проходить проверку возможности: manage_options , а в мультисайтовых версиях должны быть Супер Админами (Super Admin), чтобы отправлять данные формы.

Читайте также:  фрегат настройка роутера в link

register_setting() и все функции регистрации опций и их блоков: add_settings_*() , должны вызываться в момент срабатывания хука admin_init

Регистрация/удаление опций
Добавление блоков и отдельных полей
Вывод на экран
Ошибки

Новое поле опции можно добавить в секцию на уже существующую страницу опций WordPress или на страницу опций плагина. Для этого используется функция add_settings_field() .

Функция обратного вызова (callback) должна выводить html код поля input. Значение value поля также должно заполнятся. WordPress сам позаботится о сохранении опции в базу данных (обычно сохраняется в таблицу wp_options, но можно и перенастроить).

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

$id — Ярлык (slug) опции, используется как идентификатор поля. Используется в ID атрибуте тега.

$title — заголовок поля.

$callback — название функции обратного вызова. Функция должна заполнять поле нужным тегом, который станет частью одной большой формы. Атрибут name должен быть равен параметру $option_name из register_setting(). Атрибут id обычно равен параметру $id. Результат должен сразу выводиться на экран (echo).

$page — страница меню в которую будет добавлено поле. Указывать нужно sug страницы, т.е. параметр должен быть равен параметру $menu_slug из add_theme_page(). У базовых страниц WordPress названия равны: general, reading, writing и т.д. по аналогии.

$section — название секции страницы настроек, в которую должно быть добавлено поле. По умолчанию default или может быть секцией добавленной функцией add_settings_section.

  • $args — дополнительные параметры, которые должны быть переданы callback функции.
  • меню

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

    $id — идентификатор секции. К этому ID прикрепляются поля (см. add_settings_field()).

    $title — заголовок секции (название блока).

    $callback — функция обратного вызова, которая выполняется в начале секции, перед выводом полей. В ней можно вывести текст описывающий секцию, выводить нужно сразу на экран, используя echo.

  • $page — тип страницы настроек, на которой будет показана секция (general, reading, writing, . ).
  • меню

    $option_group — название группы, к которой относится опция. Должна совпадать с группой в функции settings_fields().

    $option_name — название опции, которая будет сохраняться.

  • $sanitize_callback — функция обратного вызова, которая будет обрабатывать значение перед сохранением.
  • Вывод секции опций на экран

    Когда API используется для добавления опций к уже существующей странице опций, нет необходимости беспокоится о html теге самой формы, потому что она уже добавлена на странице и опции (input поля) будут вставляться внутри этой формы. Однако, когда вы создаете новую страницу опций, то вам нужно указать HTML тег формы (form) и его структуру.

    settings_fields

    Чтобы вывести скрытые поля и обеспечить безопасность данных формы опций, используйте функцию settings_fields(): settings_fields( $option_group );

    • $option_group — название группы. Должно совпадать с таким же параметром у register_setting(). Это название страницы (её slug) на которой выводятся опции.
    Читайте также:  настройка wicardd для skyway nano 3
    do_settings_sections

    Чтобы вывести секцию предназначенную для страницы опций, нужно использовать функцию do_settings_sections(): do_settings_sections( $page );

    • $page — альтернативное название (slug) страницы секции которой нужно вывести. Должен совпадать с названием страницы в функции add_settings_section().

    Функция do_settings_fields() похожа на do_settings_sections(), она также выводит поля для определенной страницы и секции, только эти поля не форматируются в табличный вид, а выводятся как есть. Обычно не нужно вызывать эту функцию напрямую, а нужно использовать do_settings_sections(), чтобы вывести поля опций связанные с секцией.

    submit_button

    Форма опций нуждается в кнопке отправки данных. Для этого, используйте функцию submit_button().

    Вывод всего блока формы

    И в заключении вам нужно будет добавить HTML тег

    #1. Дополнительные опции на странице настройки WordPress «Чтение»

    Добавим новую секцию с двумя новыми опциями на базовую страницу настроек WordPress «Чтение»

    Что получилось и какой блок за что отвечает:

    #2. Страница настроек плагина (опции в массиве)

    Давайте создадим плагин, в котором будет только страница настроек. Сделаем мы это, чтобы разобраться как работает API настроек.

    Здесь регистрируется одна опция и в нее добавляются несколько разных опций как массив данных. Так удобнее и практичнее.

    В итоге получим такую страницу:

    Теперь давайте разберем код по порядку, от общего к частному.

    Чтобы быстро усвоить принцип надо мыслить категориями, а не переменными.

    Категория 1: Создание страницы настроек

    Регистрируем страницу настроек другой функцией не относящийся к API настроек:

    • ‘primer_slug’ — это ярлык страницы настроек и он по сути в API настроек нигде не фигурирует.
    Категория 2: Вывод секции на странице настроек

    Страница настроек есть, теперь на ней нам нужно вызвать секцию с настройками. Самой секции пока нет и в ней тоже ничего нет. Секцию и её содержимое мы создадим чуть ниже:

    Категория 3: Регистрация/создание секции
    • ‘section_id’ — чтобы к этой секции потом добавить поля
    • ‘primer_page’ — привязывает эту секцию к выводу секции do_settings_sections( ‘primer_page’ );
    Категория 4: Заполнение секции опциями
    • ‘section_id’ — добавляет поле в секцию.
    • ‘primer_page’ — дополнительное уточнение, что поле нужно добавить в секцию, которая вызывается с параметром do_settings_sections( ‘primer_page’ ); .
    Категория 5: Регистрация самой настройки

    Сейчас у нас уже полностью готов весь вывод настроек, но сохранение не работает, потому что WordPress не знает о существовании новой опции. Нужно «сказать» WordPress, что есть настройка option_name и её нужно обрабатывать.

    ‘option_group’ — нужно для вывода скрытых полей, для защиты формы. Для settings_fields( ‘option_group’ );

    ‘option_name’ — название самой опции, которая будет записываться в таблицу wp_options

  • ‘sanitize_callback’ — функция для изменения/очистки передаваемых данных. Её можно не указывать, тогда данные сохраняться как есть (как передаются).
  • меню

    Добавим поле с вводом телефона на страницу «Общие настройки»:

    Выведем сохраненный телефон на экран в нужном месте шаблона:

    источник

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

    Adblock
    detector