Создаем виджеты в шаблоне на CMS WordPress

26.11.2017

Регистрируем панель виджетов, в которую потом будем размещать виджеты на сайте, я обычно использую такие панели для различных функциональных частей на сайте, типа сайдбаров, футеров или для каких-то блоков в хедере.

Регистрируем виджеты:

<?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 код, который будет расположен перед каждым виджетом в панели. Например:

  • . Конструкции %1$s и %2$s будут заменены на id и class используемого в сайдбаре виджета.
    По умолчанию: '<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.

  • Полезная инфа:

    Оставить комментарий