Как в сайдбар wordpress добавить произвольное поле?
Добрый день!
Есть зарегистрированный сайдбар.
<?php function habr_template_register_wp_sidebar() { register_sidebar( array( 'id' => 'habr', 'name' => 'Пример сайдбара', 'description' => 'Описание сайдбара', 'before_widget' => '<div id="%1$s" class="side widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); add_action( 'widgets_init', 'habr_template_register_wp_sidebar' ); |
<?php function habr_template_register_wp_sidebar() { register_sidebar( array( 'id' => 'habr', 'name' => 'Пример сайдбара', 'description' => 'Описание сайдбара', 'before_widget' => '<div id="%1$s" class="side widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); add_action( 'widgets_init', 'habr_template_register_wp_sidebar' );
Страница виджетов в админке отображается в классическом режиме. Скажите, пожалуйста как в этот сайдбар добавить произвольное поле значение которого будет использоваться, например, для задания цвета фона сайдбара?
Дополнительно:
Доброго времени суток. Вам не в сайдбар необходимо поле добавить, а создать виджет
например
if(!class_exists('My_Welcome_Msg_Widget')){ class My_Welcome_Msg_Widget extends WP_Widget{ ///гуглиться легко и инфы полно }} add_action('widgets_init','my_welcome_msg_widget'); function my_welcome_msg_widget(){ register_widget('My_Welcome_Msg_Widget'); } |
if(!class_exists('My_Welcome_Msg_Widget')){ class My_Welcome_Msg_Widget extends WP_Widget{ ///гуглиться легко и инфы полно }} add_action('widgets_init','my_welcome_msg_widget'); function my_welcome_msg_widget(){ register_widget('My_Welcome_Msg_Widget'); }
например, для задания цвета фона сайдбара
для этого лучше, например, кастомайзер использовать
Если возможно, интересует именно такой функционал: добавить поле в контейнер сайдбара с возможностью сохранения значения и возможностью получить значение в месте вывода в шаблоне
как в этот сайдбар добавить произвольное поле значение которого будет использоваться, например, для задания цвета фона сайдбара?
Никак. Сайтбары предназначены для вывода на фронте, а не настроек дизайна.
Судя по всем тебе нужен метабокс и изучить опции настройки.
- Спасибо, Refguser, это я для наглядности указал, что для смены фона.
Но, тем не менее, интересует именно такая возможность добавить поле в контейнер сайдбара с возможностью сохранения значения из админки, со страницы редактирования виджетов и возможностью получить в месте вывода в шаблоне, если она есть, конечно - junior_www, ещё раз: сайдбары - для фронта. Для админки - метабоксы.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

В сам зарегистрированный sidebar произвольное поле добавить нельзя в том смысле, как это делается у поста через ACF. Sidebar — это область для виджетов, а не объект с метаданными. Поэтому цвет фона лучше задавать одним из трёх способов: через CSS-класс сайдбара, через настройки темы или через кастомный виджет/блок.
Если цвет нужен фиксированный для этого сайдбара, добавьте класс в
before_widgetили обёртку сайдбара и задайте CSS:register_sidebar([ 'id' => 'habr', 'name' => 'Пример сайдбара', 'before_widget' => '<div id="%1$s" class="side widget %2$s">', 'after_widget' => '</div>', ]);
.sidebar-habr { background: #f5f7fb; }
Если цвет должен редактироваться из админки, можно добавить настройку в Customizer:
add_action('customize_register', function ($wp_customize) { $wp_customize->add_setting('habr_sidebar_bg', [ 'default' => '#f5f7fb', ]); $wp_customize->add_control(new WP_Customize_Color_Control($wp_customize, 'habr_sidebar_bg', [ 'label' => 'Фон сайдбара', 'section' => 'colors', ])); });
А на фронте вывести CSS через
wp_head:add_action('wp_head', function () { $color = get_theme_mod('habr_sidebar_bg', '#f5f7fb'); echo '<style>.sidebar-habr{background:' . esc_attr($color) . ';}</style>'; });
Если фон должен настраиваться для каждого виджета отдельно, тогда нужен кастомный виджет с полем цвета или блоковый редактор виджетов. Для обычного сайдбара поле «цвет фона» логичнее хранить в настройках темы, а не пытаться прикрутить meta к sidebar.
Есть ещё вариант через ACF Options Page, если сайдбар относится к конкретному разделу сайта. Например, можно сделать поле
sidebar_backgroundна странице настроек темы и использовать его при выводе сайдбара. Это удобно, когда дизайнеру нужно менять не только фон, но и заголовок, баннер, кнопку или текст в боковой колонке. Для одного цвета Customizer проще, для набора настроек — options page удобнее.