Добавляем параметры в настройки WordPress

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

Наиболее очевидным механизмом для хранения переменных является использование API опций (options). Здесь мы рассмотрим как наиболее просто создать дополнительные поля для редактирования опций прямо в админке WordPress.

Терминология

Но для начала надо разобраться с терминологией.

В «Настройках» есть отдельные страницы или группы опций (Общие, Написание, Чтение, …), которые могут быть поделены на секции. А в определенные секции мы уже прикрепляем опции.

Т.е. есть иерархия — группа-секция-опция.

Регистрация опций

Предварительно опция должна быть зарегистрирована функцией register_setting(). Затем специальный метод add_settings_field() позволяет описать опцию и прикрепить её в нужную секцию страницы настроек.

Если выполнить add_settings_field() без register_setting(), то хоть опция и появится в шаблоне страницы, но при сохранении её изменения не будут зафиксированы.

Как определить имя страницы (группы)?

Имя группы настроек можно подсмотреть в uri соответствующей страницы. Например, страница «обсуждение» имеет следующий адрес:

Здесь имя группы будет — discussion.

Как определить имя секции?

Полный список зарегистрированных секций можно получить из глобальной переменной — $wp_settings_sections.

Новые секции регистрируются функцией add_settings_section($id, $title, $callback, $page).

Если имена секций неизвестны (лень подсматривать), то можно использовать ‘default’.

Чтение/изменение опций

Т.к. настройки — это часть options API, то чтение и запись производится методами get_option() и update_option().

Что касается работы с опцией в админ панели, то сохранение зарегистрированных настроек WP производит сам.

Пример

Добавим несколько опций на страницу Настройки -> Общие. Это будет телефон, email и адрес офиса — переменные, которые потом (по легенде) будут выводится в шаблоне. Специально для них создадим секцию — ‘Контакты’.

Регистрация лучше произвести во время admin_init:

Надеюсь, пример поможет вам сориентироваться и уже дальше развить его в то, что вам нужно на практике. Читайте также мануалы к функциям на https://developer.wordpress.org/.

Мало букафф? Читайте есчо !

SQL скрипт для удаления комментариев не прошедших проверку

Декабрь 8, 2015 г.

Есть у меня несколько сайтов на wordpress, которые я когда то сделал в порыве энтузиазма, а теперь не занимаюсь ими особо. На днях обратил внимание, что один из них содержит > 12000 непроверенных комментариев. Комментарии я давно не публикую сразу, ...

Читать

Получить ID публикации по адресу (slug, path, name) в WP

Февраль 8, 2018 г.

Wordpress API очень разрослось, и почти на каждый случай есть своя функция. И в этой куче функций найти то, что нужно, бывает не просто. Задача - получить ID публикации по её адресу, а вернее значению slug или post_name. В кодексе есть подходящая ...

Читать

Модуль для WP Counter Integration

Октябрь 30, 2015 г.

На днях собрал модуль для подключения счетчиков на сайт под WP. Он позволяет добавить код Метрики Яши и Аналитики Гоши. Сегодня я его уже записал в репозиторий wordpress.org. Он решает задачу по размещению кода счетчика на страницах сайта, но не ...

Читать

Как в WP получить путь к каталогу темы

Апрель 14, 2023 г.

Wordpress реализует целое семейство параметров, которые можно использовать в шаблоне. В том числе и переменные, указывающие путь к файлам темы. Разбираемся в нюансах. Ключевых переменных тут две: [crayon-698e242c6c64b050654452/] В чем их ...

Читать
 

Комментарии к «Добавляем параметры в настройки WordPress»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Добавляем параметры в настройки WordPress”

  1. Berserk:

    Ошибки в коде

  2. Olga:

    Рабочий код без ошибок:

    add_action(‘admin_init’, ‘add_option_fields_to_general_admin_page’);

    function add_option_fields_to_general_admin_page() {
    //список опций, которые будем добавлять
    $options = array(
    ‘my-tel’ => ‘Телефон’,
    ‘my-email’ => ‘Email’,
    ‘my-addr’ => ‘Адрес’
    );

    //создаём секцию
    add_settings_section(
    ‘my_setting_section’, //ID секции
    ‘Контакты’, //заголовок
    ‘my_setting_section_cb_func’, //callback шаблона
    ‘general’ //ID группы опции
    );

    //проводим регистрацию и настройку опций
    foreach ($options as $ID => $label) {
    // регистрация на странице general («Общие»)
    register_setting( ‘general’, $ID);
    // выполняем настройки поля
    add_settings_field(
    $ID, //ID поля
    $label, //метка
    ‘my_setting_cb_func’, //функция, выводящая шаблон поля
    ‘general’, //ID группы опций
    ‘my_setting_section’, //ID секции
    array(
    ‘id’ => $ID,
    ‘option_name’ => $ID
    )
    );
    }
    }

    //кол-бэк ф-ция вывода шаблона поля
    function my_setting_cb_func( $val ){
    $name = $val[‘option_name’];
    echo »;
    }

    function my_setting_section_cb_func($arg){
    // вывод шаблона секции,
    // заголовок уже выведен, тут можно добавить описание
    // arg содержит параметры, которые были заданы при добавлении секции
    echo ‘id: ‘ . $arg[‘id’] . »; //ID секции
    echo ‘title: ‘ . $arg[‘title’] . »; //заголовок
    echo ‘callback: ‘ . $arg[‘callback’] . »; // имя текущей функции
    }