Обзор
Все шаблонные функции (get_field, the_field, и т. д.) можно использовать для загрузки значений из виджета, однако для обращения к нужному виджету требуется второй параметр. Это похоже на передачу параметра $post_id для обращения к конкретному объекту записи.
Необходимый параметр $post_id — это строка, содержащая слово ‘widget_’ и ID виджета в следующем формате: "widget_{$widget_id}"
Чтобы вывести значения пользовательских полей внутри виджета, вам нужно использовать фильтр, чтобы изменить HTML-аргументы. Если виджет создан вручную, вы также можете настроить HTML-вывод в функции widget в классе вашего виджета.
Требования
Для пользовательских полей в комментариях требуется как минимум ACF версии 5
Примеры
Использование базового параметра
В этом примере показано, как второй параметр используется для обращения к конкретному комментарию.
<p><?php the_field('field_name', 'widget_' . $widget_id); ?></p>Базовая настройка виджета
В этом примере показано, как настроить виджет ‘Text’, чтобы он отображался с цветным фоном и показывал изображение. Поскольку виджеты пока не содержат действий или callback-функций для добавления дополнительного HTML, нам нужно использовать фильтр (dynamic_sidebar_params), чтобы изменить HTML before_widget и after_widget.
Следующий код размещается в файле functions.php.
add_filter('dynamic_sidebar_params', 'my_dynamic_sidebar_params');
function my_dynamic_sidebar_params( $params ) {
// получаем данные виджета
$widget_name = $params[0]['widget_name'];
$widget_id = $params[0]['widget_id'];
// выходим заранее, если этот виджет не является виджетом Text
if( $widget_name != 'Text' ) {
return $params;
}
// добавляем стиль цвета к before_widget
$color = get_field('color', 'widget_' . $widget_id);
if( $color ) {
$params[0]['before_widget'] .= '<style type="text/css">';
$params[0]['before_widget'] .= sprintf('#%s { background-color: %s; }', $widget_id, $color);
$params[0]['before_widget'] .= '</style>';
}
// добавляем изображение к after_widget
$image = get_field('image', 'widget_' . $widget_id);
if( $image ) {
$params[0]['after_widget'] = '<img src="' . $image['url'] . '">' . $params[0]['after_widget'];
}
// возвращаем
return $params;
}Обновлено: 01.06.2026