Йоу-йоу. В этой статье я расскажу вам, как создать страницу с настройками темы. Часто случается, что нужно хранить настройки темы, от которых зависит информация, на сайте. Например, вы хотите хранить контактные данные и всегда получать актуальные данные в своём шаблоне. Я, например, использовал настройки для формирования формы обратной связи в зависимости от выбранной настройки. Возможно как-нибудь об этом напишу. А пока начнём.
Мы имеем дело с 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 нужно заменить на собственный префикс.
Цель данной статьи — это чтобы читатель мог как можно быстрее создать свою настройку. Вот вам код:
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''); }
Далее нам нужно создать функцию отображения настройки. По сути она будет выводить инпут.
Ранее я сказал, что это может быть 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’а на страницу.