Как добавить динамические сайдбары для виджетов в WordPress

Виджеты представляют собой настолько неотъемлемую часть темы WordPress, что сложно даже представить тему ВП без них. Виджеты — это исполняемые скрипты, которые вы просто можете перетянуть в ваш сайдбар или на любую произвольную область виджетов в вашей теме. Множество пользователей используют виджеты для того, чтобы добавить элементы в свой сайдбар. Однако эта статья для тех любознательных пользователей, которые хотят научиться добавлять динамические сайдбары для виджетов или произвольные области для виджетов в тему WordPress самостоятельно.

Регистрируем сайдбары или произвольные области для виджетов в WordPress

Прежде всего вам необходимо зарегистрировать ваш сайдбар произвольную область для виджетов для вашей темы. Регистрировать их можно в любом количестве. Скопируйте и вставьте этот код в файл functions.php вашей темы:

function devise_widgets_init() {

	register_sidebar( array(
		'name' => __( 'Main Sidebar', 'devise' ),
		'id' => 'sidebar-1',
		'description' => __( 'The main sidebar appears on the right on each page except the front page template', 'devise' ),
		'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' =>__( 'Front page sidebar', 'devise'),
		'id' => 'sidebar-2',
		'description' => __( 'Appears on the static front page template', 'devise' ),
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget' => '</aside>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>',
	) );
	}

add_action( 'widgets_init', 'devise_widgets_init' );

В этом коде мы зарегистрировали 2 сайдбара. Мы задали им имена и описания для того, чтобы узнать их на странице виджетов. Параметры описания могут использоваться для того, чтобы сообщать пользователям где именно сайдбары появятся в теме. devise — это название темы, над которой мы работаем, и оно используется здесь для того, чтобы сделать строки доступными для перевода в будущем. При необходимости, можете заменить их на название своей темы.

widgetsidebars[1]

Добавляем динамические сайдбары в файлы темы WordPress

До сих пор мы только лишь зарегистрировали динамические сайдбары. Пользователи могут перетягивать виджеты на эти сайдбары со страницы Внешний вид » Виджеты. Однако, эти сайдбары не появятся на вашем сайте, пока они не будут вызваны из шаблона типа sidebar.php или любого другого, где вы захотите их вывести. Для добавления этих областей для виджетов отредактируйте файл шаблона в том месте, где вам нужно отобразить сайдбар и вставьте туда следующий код:

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

В этом коде для примера мы использовали id сайдбара для вызова его в том месте, где он будет отображаться. Можно изменить id сайдбара для того, чтобы показать другой. Например, вы можете зарегистрировать три сайдбара для футера и вызывать их один за другим в шаблоне strong>footer.php темы.

Виджеты — довольно мощная штука. Их можно добавлять в записи и страницы, раскрасить текстовые виджеты в разные цвета и использовать плагин Widget Logic для сотворения действительно уникальных функций. Правильно размещенный сайдбар для виджетов позволяет юзерам добавлять собственные элементы на свои сайты, используя интерфейс перетягивания (drag’n’drop).

Надеемся, что статья помогла вам научиться добавлять динамические сайдбары для виджетов в WordPress. Вопросы и комментарии как обычно — в форму ниже :)

VN:F [1.9.22_1171]
Rating: 4.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • Влакд

    а если сайдбары зарегистрированы без этой строки: ‘id’ => ‘sidebar-1′

    а в самом сайдбаре-файле пхп прописано ( !function_exists(‘dynamic_sidebar’)

    || !dynamic_sidebar(1-в первом, 2-во втором) )

    То как их идентифицировать в singl/пхп ?

    Там строка get_sidebar(); выводит первый из зарегистрированных

    • http://web-devise.com/ ADv

      Если не добавить сайдбару ID (идентификатор), то, соответственно, и идентифицировать его не представляется возможным. Как вариант, оформить каждый нужный вам сайдбар в отдельный файл и вызывать get_sidebar(название_вашего_файла_с_сайдбаром)

  • d1sapp3ar

    Хороший урок. У меня вопрос, а можно этот урок я выложу у себя на сайте (сайт посвящен бесплатным урокам и статьям)? Авторство и ссылку на ваш сайт гарантирую.

    • http://web-devise.com/ ADv

      Выкладывайте. От ссылки тоже не откажемся :)

  • Саня

    Полезная статья, респект! У меня немного другого рода проблемка. Надеюсь на вашу помощь. Не выводится сайдбар woocommerce, хотя я в него добавляю разные виджеты, но все равно не фурычит:(. Тема ВП стоит Kora, там написано что с woocommerce работает нормально.

    Вот код: файл function/widget-functions.php — регистрация сайдбара:

    function mfn_register_sidebars() {
    // shop sidebar ——————————————————-
    register_sidebar(array(
    ‘name’ => __(‘WooCommerce sidebar’, ‘mfn-opts’),
    ‘id’ => ‘shop-sidebar’,
    ‘before_widget’ => »,
    ‘after_widget’ => »,
    ‘before_title’ => »,
    ‘after_title’ => »,
    ));
    }
    add_action( ‘widgets_init’, ‘mfn_register_sidebars’ );

    Вывод сайдбара: файл woocommerce/archive-product.php и single-product.php

    менял на ‘shop-sidebar’ все равно ничего нет

    А вот сам файл сайдбара: лежит в папке woocommerce/shop/sidebar.php

    можете чем нибудь помочь?

    • Саня

      Вывод сайдбара: файл woocommerce/archive-product.php и single-product.php

      менял на ‘shop-sidebar’ все равно ничего нет

      • Саня

        вот тут менял на ‘shop-sidebar’

        • Саня
      • Саня

        пхп открывается do_action(‘woocommerce_sidebar’); пхп закрывается

        не хочет disqus писать коды :)

Scroll To Top