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

Настройки темы 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' );

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

оцените контент и участвуйте в выборе трендов