Настройки темы WordPress — как добавить свои поля?

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

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

Для этого можно конечно городить разные фреймворки опций, покупать расширения для ACF.

Но есть и более естественный механизм http://codex.wordpress.org/Theme_Customization_API

Пример сниппета, который добавляет хранение адреса и телефона:

<?php
/*
Короткий пример для использования Theme_Customization_API 
http://casepress.org/kb/web/nastrojki-temy-wordpress-kak-dobavit-svoi-polya/
*/
/**
 * Добавляет страницу настройки темы в админку Вордпресса
 */
function mytheme_customize_register( $wp_customize ) {
/*
Добавляем секцию в настройки темы
*/
$wp_customize->add_section(
    // ID
    'data_site_section',
    // Arguments array
    array(
        'title' => 'Данные сайта',
        'capability' => 'edit_theme_options',
        'description' => "Тут можно указать данные сайта"
    )
);
/*
Добавляем поле контактных данных
*/
$wp_customize->add_setting(
    // ID
    'theme_contacttext',
    // Arguments array
    array(
        'default' => '',
        'type' => 'option'
    )
);
$wp_customize->add_control(
    // ID
    'theme_contacttext_control',
    // Arguments array
    array(
        'type' => 'text',
        'label' => "Текст с контактной информацией",
        'section' => 'data_site_section',
        // This last one must match setting ID from above
        'settings' => 'theme_contacttext'
    )
);
/*
Добавляем поле телефона site_telephone
*/
$wp_customize->add_setting(
    // ID
    'site_telephone',
    // Arguments array
    array(
        'default' => '',
        'type' => 'option'
    )
);
$wp_customize->add_control(
    // ID
    'site_telephone_control',
    // Arguments array
    array(
        'type' => 'text',
        'label' => "Текст с телефоном",
        'section' => 'data_site_section',
        // This last one must match setting ID from above
        'settings' => 'site_telephone'
    )
);
}
add_action( 'customize_register', 'mytheme_customize_register' );

Результат выглядит вот так:

комментария 4

  1. Здравствуйте. Подскажите — должны ли после заполнения полей (телефон и адрес) информацией — сама информация об этом выводиться где-нибудь на сайте? Просто в настройках поля появились, но толку от них? Информация ведь — не отображается, зачем они? Или их надо как-то подключать еще по каким-нибудь идентификаторам?

    • Здравствуйте! Не совсем. Добавив эти поля, вы обеспечили ввод данных.
      Но чтобы их показать, нужно сделать вывод.

      Если вы сохранили данные в таблицу опций, то получить их от туда можно методом http://wp-kama.ru/function/get_option

  2. Какой шикарный способ! Спасибо.
    А повторяющиеся поля так можно делать?

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *