Дополнительный сайдбар

Создать дополнительный сайдбар для виджетов на страницах записи, рубрик, форматов и т.д. Если Вы для этого использовали что то вроде include TEMPLATEPATH рекомендую заменить на один из примеров продемонстрированных на этой странице.

Оглавление:
  1. Добавить сайдбар для виджетов
  2. Пояснение кода
  3. Вывести дополнительный сайдбар
  4. Примеры вывод дополнительного сайдбара

Добавить сайдбар для виджетов

Бывают случаи когда для темы WordPress нужно добавить еще один или несколько сайдбаров. Обычно такая ситуация возникает когда сайт становится большим, и администратору сайта нужно больше контейнеров для отображения как можно больше информации. Или если рубрика или формат записей отличаются темой, возможно понадобится добавить сайдбар по теме рубрики или формата записей.

Чтобы добавить сайдбар, нужно в активной теме WordРres открыть файл functions.php и добавить код внутри функции widgets_init :

register_sidebar( array(
  'name' => __( 'Front Sidebar', 'название темы' ),
  'id' => 'sidebar-front',
  'description' => __( 'Front sidebar that appears on the left.', 'название темы' ),
  'before_widget' => '<aside id="%1$s" class="widget %2$s">',
  'after_widget' => '</aside>',
  'before_title' => '<h2 itemprop="name" class="widget-title">',
  'after_title' => '</h2>',
) );
к меню ↑

Пояснение кода

Дополнительный сайдбар называется Front Sidebar, в строку название темы  вставляем название активной темы. sidebar-front — это идентификатор дополнительного сайдбара. itemprop="name" — это атрибут schema.org для названия заголовка сайдбара.

Дальше нужно скопировать файл sidebar.php и переименовать в sidebar-front.php. После открываем файл sidebar-front.php и в строках is_active_sidebar( 'sidebar-1' ) и dynamic_sidebar( 'sidebar-1' ) там где sidebar-1 меняем на sidebar-front. И последнее, нужно сделать перевод на русский язык описания дополнительного сайдбара с помощью редактора Poedit.

к меню ↑

Вывести дополнительный сайдбар

Если Вы сделали всё правильно, в админке WordPress в закладке Внешний вид > Виджеты уже должно быть поле с дополнительным сайдбаром. Как его применить зависит от ваших потребностей.

к меню ↑

Примеры вывод дополнительного сайдбара

Cайдбар для определённых записей.

Открываем файл single.php находим строки:

<?php
  get_sidebar();
  get_footer();

и вставляем наш сайдбар

<?php
  get_sidebar( 'front' );
  get_sidebar();
  get_footer();

или заменить на

<?php
if (is_single( array(id,id))):
  get_sidebar( 'front' );
else :
  get_sidebar();
endif;
  get_footer();
Пояснение кода:

array(id,id) — это массив записей с идентификаторами записей, id записей можно узнать если навести курсор на слово изменить. Цифры в ссылке и будут id записи.

  • get_sidebar( 'front' ) — это дополнительный сайдбар который будет выводится только для записей с указанным id.
  • get_sidebar() — это основной сайдбар, будет выводится для всех остальных записей.
  • get_footer() — это основной сайдбар, будет выводится абсолютно для всех записей.

Cайдбар для определённой рубрики.

<?php
if (is_category('id')):
  get_sidebar( 'front' );
else :
  get_sidebar();
endif;
  get_footer();

Пример вывод дополнительного сайдбара для определённого формата.

<?php
if (has_post_format( 'link' )):
  get_sidebar('front');
else :
  get_sidebar();
endif;
  get_footer();

Cайдбар для страницы результатов поиска.

<?php
if (is_search()):
  get_sidebar('front');
else :
  get_sidebar();
endif;
  get_footer();

Cайдбар для страницы с изображением.

<?php
if (wp_attachment_is_image()):
  get_sidebar('front');
else :
  get_sidebar();
endif;
  get_footer();

Cайдбар для страницы с метками.

<?php
if (is_tag()):
  get_sidebar('front');
else :
  get_sidebar();
endif;
  get_footer();

Cайдбар для страницы.

<?php
if (is_page()):
  get_sidebar('front');
else :
  get_sidebar();
endif;
  get_footer();

Cайдбар для главной страницы.

<?php
if (is_home()):
  get_sidebar('front');
else :
  get_sidebar();
endif;
  get_footer();

Cайдбар для статической страницы.

<?php
if (is_front_page()):
  get_sidebar('front');
else :
  get_sidebar();
endif;
  get_footer();

htmlhook.ru | Скрипты для веб-приложений