user gravatar

Как добавить новые виджет зоны в Wordpress тему

Как добавить новые виджет зоны в Wordpress тему

Одна из самых мощных функции Wordpress - это виджеты. Если ваша тема поддерживает их, то вы можете с легкостью добавлять, удалять виджеты простым перетаскиванием.

Ну а в случае если ваша тема не поддерживает пока-что виджетов, то этот пост для вас :).

Как добавить новую зону для виджета?

Откройте файл functions.php, который находится в директории вашей темы. Если его не существует, то вам следует создать его.

После того, как открыли этот файл, вам нужно вставить следующий код в самый конец файла:

/**
 * Регистрация нового сайдбара
 */
function my_widgets_init() {
    register_sidebar( array(
        'name' => 'Левый сайдбар',
        'id' => 'left_sidebar',
        'before_widget' => '<div>',
        'after_widget' => '</div>',
        'before_title' => '<h2 class="rounded">',
        'after_title' => '</h2>',
    ) );
}
add_action( 'widgets_init', 'my_widgets_init' );

Итак, код требует кое-какого пояснения. Обратите внимание на участок кода, который начинается с add_action(. Это хук-функция, которая исполняет переданную функцию во время выполнения какого-либо хука.

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

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

Как выводить виджеты в новом сайдбаре?

Если после сохранения изменений в function.php, вы зайдете в админку Wordpress, то вы можете увидеть новый сайдбар. В него вы уже можете перетаскивать виджеты. Но пока что ничего в теме не будет выводиться.

Для того, чтобы вывести виджеты в теме, вам нужно в том участке где нужно вывести виджеты вставить следующий код:

<?php if ( is_active_sidebar( 'left_sidebar' ) ) : ?>
<div id="primary-sidebar" class="primary-sidebar widget-area" role="complementary">
    <?php dynamic_sidebar( 'left_sidebar' ); ?>
</div>
<?php endif; ?>

Вместо left_sidebar нужно вписать ID вашего сайдбара.

И на этом всё.

Source