Регистрируем панель виджетов, в которую потом будем размещать виджеты на сайте, я обычно использую такие панели для различных функциональных частей на сайте, типа сайдбаров, футеров или для каких-то блоков в хедере.
Регистрируем виджеты:
<?php function register_my_widgets() { register_sidebar(array( 'name' => 'Sidebar', 'id' => "sidebar-widget", 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '', )); register_sidebar(array( 'name' => 'Home Sidebar', 'id' => "home-sidebar-widget", 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '', )); } add_action('widgets_init', 'register_my_widgets'); ?>
Выводим виджеты:
<?php if ( is_active_sidebar( 'sidebar-widget' ) ) : ?> <?php dynamic_sidebar( 'sidebar-widget' ); ?> <?php endif; ?> <?php if ( is_active_sidebar( 'home-sidebar-widget' ) ) : ?> <?php dynamic_sidebar( 'home-sidebar-widget' ); ?> <?php endif; ?>
Второй вариант вывода виджета:
<?php if ( function_exists('dynamic_sidebar') ) dynamic_sidebar('sidebar-widget'); ?>
Более подробно:
Шаблон использования виджетов
add_action( 'widgets_init', 'register_my_widgets' ); function register_my_widgets(){ register_sidebar( array( 'name' => sprintf(__('Sidebar %d'), $i ), 'id' => 'sidebar-$i', 'description' => '', 'class' => '', 'before_widget' => '<li id="%1$s" class="widget %2$s">', 'after_widget' => "</li>\n", 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>\n', ) ); }
Аргументы параметра $args
name(строка)
Название панели виджетов. Название будет видно в админ-панели WordPress. По умолчанию «Боковая колонка 1» (локализация от Sidebar $i, где $i порядковый номер сайдбара). Значение не должно быть пустым!
По умолчанию: sprintf(__('Sidebar %d'), $i )
id(строка)
Идентификатор виджета. Строка, в которой не должно быть заглавных букв и пробелов. Значение не должно быть пустым, если оставить этот параметр пустым, то в режиме разработки (при дебаге) получите заметку типа E_USER_NOTICE.
По умолчанию: 'sidebar-$i'
description(строка)
Текст описывающий где будет выводиться панель виджетов. Показывается в панели управления виджетами.
По умолчанию: ''
class(строка)
CSS класс, который будет добавлен главному HTML тегу панели виджетов.
По умолчанию: ''
before_widget(строка)
HTML код, который будет расположен перед каждым виджетом в панели. Например:
По умолчанию:
'<li id="%1$s" class="widget %2$s">'
after_widget(строка)
HTML код, который будет расположен после каждого виджета в панели. Например: </li>
.
По умолчанию: '</li>\n'
before_title(строка)
HTML код перед заголовком виджета.
По умолчанию: '<h2 class="widgettitle">'
after_title(строка)
HTML код после заголовка виджета.
По умолчанию: '</h2>\n'
Например, зарегистрируем панель виджетов для главной страницы сайта
Добавим код в functions.php
:
function register_my_widgets(){ register_sidebar( array( 'name' => 'Боковая панель на главной странице', 'id' => 'homepage-sidebar', 'description' => 'Выводиться как боковая панель только на главной странице сайта.', 'before_widget' => '<li class="homepage-widget-block">', 'after_widget' => '</li>', 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>', ) ); } add_action( 'widgets_init', 'register_my_widgets' );
В файл home.php
вставим вывод панели:
<div class="custom"> <?php if ( function_exists('dynamic_sidebar') ) dynamic_sidebar('homepage-sidebar'); ?> </div>
Более подробно на сайте wp-kama.ru.