Как редактировать виджеты в WordPress
В меню Внешний вид -> Виджеты есть список виджетов, которые можно перетаскивать для отображения в боковой панели.
Где находится HTML/PHP код для этих пользовательских виджетов?
Я просмотрел справочник функций WordPress, но ничего не нашел. Очевидно, что эти виджеты должны подгружаться из HTML/PHP шаблона.
Причина, по которой я хочу это узнать: по умолчанию заголовки виджетов обернуты в теги <h3>
, а я хочу изменить их на теги <h5>
. Также мне нужно добавить несколько <hr />
и другие элементы.
Я просмотрел файл theme/includes/widgets.php
, но ничего не нашел.
Кстати, я использую копию темы Twenty Eleven для модификации своей темы.
Код в theme/sidebar.php
предназначен для (!dynamic_sidebar())
, однако моя боковая панель является динамической, поэтому этот код бесполезен.

WordPress Widgets API — это механизм создания различных виджетов и регистрации сайдбаров.
При создании нового виджета можно использовать переменные, которые могут быть добавлены к любому виджету. Их значения берутся из аргументов функции register_sidebars
.
args (строка/массив) (необязательно)
Создает сайдбар на основе значений 'name' и 'id'. По умолчанию: None
name
- Название сайдбара.
id
- Идентификатор сайдбара.
before_widget
- HTML-код, добавляемый перед каждым виджетом.
after_widget
- HTML-код, добавляемый после каждого виджета.
before_title
- HTML-код, добавляемый перед каждым заголовком.
after_title
- HTML-код, добавляемый после каждого заголовка.
Пример:
<?php
add_action( 'widgets_init', 'prefix_register_sidebars' );
function prefix_register_sidebars() {
$args = array(
'name' => 'Мой сайдбар',
'id' => 'my-sidebar',
'before_widget' => '<div id="%1$s" class="widget %2$s">',,
'after_widget' => '</div><hr />',
'before_title' => '<h5 class="widgettitle">',
'after_title' => '</h5>'
);
register_sidebars( $args );
}
Пример виджета:
class MY_Widget extends WP_Widget {
function my_widget( $args, $instance ) {
$widget_ops = array(
'description' => 'Описание моего виджета'
);
parent::WP_Widget(false, 'Название моего виджета', $widget_ops );
}
function widget() { // Управляет отображением виджета
$title = 'Заголовок моего виджета';
echo $before_widget; // Выводит настройку 'before_widget' из register_sidebars
echo $title; // Будет обернуто в настройки 'before_title' и 'after_title'
echo '<p>Это вывод моего виджета</p>';
echo $after_widget; // Выводит настройку 'after_widget'
}
}
add_action( 'widgets_init', 'prefix_register_widgets' );
function prefix_register_widgets() {
register_widget( 'my_widget' );
}

это в файле functions.php
function twentyeleven_widgets_init() {
register_widget( 'Twenty_Eleven_Ephemera_Widget' );
register_sidebar( array(
'name' => __( 'Главная боковая панель', 'twentyeleven' ),
'id' => 'sidebar-1',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => "</aside>",
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
