Добавление своих областей виджетов в сайдбар WordPress

Добавление своих областей виджетов в сайдбар WordPress

Мы продолжаем курс изучения WordPress для продвинутых пользователей. Сегодня мы узнаем как зарегистрировать свои кастомные области для виджетов в WordPress и как вывести их в шаблоне.

Добавить новую область виджетов в WordPress

Добавлять области для виджетов в сайдбар будем в теме twentytwelve. Открываем файл functions.php, и на 234 строке находим комментарий с таким текстом: Register sidebars

Находим функцию:

function twentytwelve_widgets_init() {

    register_sidebar( array(
        'name' => __( 'Main Sidebar', 'twentytwelve' ),
        'id' => 'sidebar-1',
        'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );

...

Как видно в ней уже зарегистрированы сайдбары (области виджетов). Регистрируются они функцией

register_sidebar ();

В конец данной функции я добавил две своих области виджетов. В итоге весь блок function twentytwelve_widgets_init() { … } стал выглядеть следующим образом:

/* ------------------------------------------------------------------------------------------------------------------

    Создаю свои области для виджетов

------------------------------------------------------------------------------------------------------------------ */


function twentytwelve_widgets_init() {

    register_sidebar( array(
        'name' => __( 'Main Sidebar', 'twentytwelve' ),
        'id' => 'sidebar-1',
        'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );

    register_sidebar( array(
        'name' => __( 'First Front Page Widget Area', 'twentytwelve' ),
        'id' => 'sidebar-2',
        'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );

    register_sidebar( array(
        'name' => __( 'Second Front Page Widget Area', 'twentytwelve' ),
        'id' => 'sidebar-3',
        'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );



    // СВОИ ОБЛАСТИ ВИДЖЕТОВ

    register_sidebar( array(
        'name' => __( 'First my personal sidebar', 'twentytwelve' ),
        'id' => 'my-first',
        'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );

    register_sidebar( array(
        'name' => __( 'Second my personal sidebar', 'twentytwelve' ),
        'id' => 'my-second',
        'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ),
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => '</aside>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );


}

Из кода выше можно увидеть что я зарегистрировал две своих области виджетов:

1) Область с именем «First my personal sidebar» и id «my-first»

2) Область с именем «Second my personal sidebar» и id «my-second»

Вывод кастомных областей виджетов в шаблоне wordpress

Теперь необходимо вывести в шаблоне созданные области виджетов.

Заходим в файл с шаблоном сайдбара — sidebar.php

И в конец файла вставляем код:

<?php if ( is_active_sidebar( 'my-first' ) ) : ?>

     <?php dynamic_sidebar( 'my-first' ); ?>

<?php endif; ?>

И вторую область виджетов я вставлю в шаблон sidebar-front.php

<?php if ( is_active_sidebar( 'my-second' ) ) : ?>

     <?php dynamic_sidebar( 'my-second' ); ?>

<?php endif; ?>

Теперь можно в админке WordPress наполнить созданные области виджетами и проверить их работу на сайте. Если все сделано правильно, все будет работать.

  • Алексей

    У вас ошибка. Вы пишете:

    «Из кода выше можно увидеть что я зарегистрировал две своих области виджетов:
    1) Область с именем «First my personal sidebar» и id «my-first»
    2) Область с именем «First my personal sidebar» и id «my-first»»,
    в то время как вторму sidebar’у присвоили id «my-second».

    • Точно, спасибо за замечание, исправил.

  • Отличная статья, отправил 100 р в копилку автора. Чего и всем советую.

    • Благодарю!) Рад что моя статья оказалась полезной!)