Создание страницы настроек темы для Worpdress

создание страницы настроек для темы wordpress

Йоу-йоу. В этой статье я расскажу вам, как создать страницу с настройками темы. Часто случается, что нужно хранить настройки темы, от которых зависит информация, на сайте. Например, вы хотите хранить контактные данные и всегда получать актуальные данные в своём шаблоне. Я, например, использовал настройки для формирования формы обратной связи в зависимости от выбранной настройки. Возможно как-нибудь об этом напишу. А пока начнём.

Шаг 1. Создаём пункт меню для настроек

Мы имеем дело с wp, так что всё очень просто. Одновременно создадим и пункт меню, и страницу для настроек. Вот код:

function my_preffix_appearance_menu_item() {
    add_theme_page(__('Настроки темы', 'textdomain'), 'Настройки темы', 'edit_theme_options', 'theme_options', 'my_preffix_plugin_function');
}
add_action('admin_menu', 'my_preffix_appearance_menu_item');

function my_preffix_plugin_function(){
    ?>
    <div class="wrap">
        <h2><?php echo get_admin_page_title() ?></h2>


        <form action="options.php" method="POST">
            <?php
            settings_fields( 'my_preffix_option_group' );
            do_settings_sections( 'my_preffix_options' );
            submit_button();
            ?>
        </form>
    </div>

    <?php

}

В результате у нас появится страница с заголовком и кнопкой «сохранить настройки». Конечно же my_preffix нужно заменить на собственный префикс.

Шаг 2. Регистрация секции настроек и опций.

Цель данной статьи — это чтобы читатель мог как можно быстрее создать свою настройку. Вот вам код:

add_action('admin_menu', 'my_preffix_option_group_display');
function my_preffix_option_group_display(){
    // Регистрируем секцию настроек
    add_settings_section('my_preffix_option_group', 'Контакты', 'my_preffix_display_option_group', 'my_preffix_options');

    /**
    * my_preffix_display_option_group - Функция заполняет секцию описанием. Вызывается перед выводом полей.
    */

    // Добавляем настройку
    add_settings_field('zss_page_about_us', 'Телефон', 'my_preffix_option_phone', 'my_preffix_options', 'my_preffix_option_group');


    // Регистрируем настройку для секции
    register_setting('my_preffix_option_group', 'my_preffix_option_phone'');

}

Далее нам нужно создать функцию отображения настройки. По сути она будет выводить инпут.

Шаг 3. Функция вывода поля настройки

Ранее я сказал, что это может быть input, но вы можете сделать и textarea и select. У нас была ранее вызвана функция add_settings_field(‘my_preffix_option_phone’, ‘Телефон’, ‘my_preffix_option_phone_display’, ‘my_preffix_options’, ‘my_preffix_option_group’);. Нам нужно название my_preffix_option_phone_display. Так мы и назовём функцию, которая печатает input

function my_preffix_option_phone_display(){
    echo '<input type="tel" name="my_preffix_option_phone" id="my_preffix_option_phone" pattern="+7-[0-9]{3}-[0-9]{3}" value="'. get_option('my_preffix_option_phone') .'" />';
}

Вуаля! Так мы получаем в настройках вашей темы телефон. Вывести его вы сможете вот так:

echo get_option('my_preffix_option_phone');

Если вам будет нужно сделать еще несколько полей, то внутри my_preffix_option_group_display вы должны будете сделать еще раз добавление настройки (add_settings_field) и её регистрацию (register_setting). Отдельно назначить новую функцию для вывода input’а на страницу.