Боковая колонка в теме WordPress Twenty Eleven

Начиная с версии WordPress 3.2 в стандартную поставку входит тема Twenty Eleven. Сама по себе тема очень неплоха и, наверно, единственный ее недостаток заключается в том, что на одиночных страницах и страницах записей отсутствует боковая колонка — так называемый сайдбар. 

С отсутствующим сайдбаром пропадает место для рекламы и навигации. Однако это поправимо с помощью следующих шагов.

Создайте дочернюю тему. Как это делается описано в статье Дочерние темы. Создайте в папке темы файл functions.php — он будет использован позже.

Добавьте вызов показа боковой колонки. Для этого отредактируйте файлы single.php и page.php и добавьте строку

<?php get_sidebar(); ?>

перед строкой

<?php get_footer(); ?>

Добавьте в файл functions.php код для исключения класса .singular из body_class

add_filter('body_class', 'blacklist_body_class', 20, 2);
function blacklist_body_class($wp_classes, $extra_classes) {
if( is_single() || is_page() ) :
// List of the classes to remove from the WP generated classes
$blacklist = array('singular');
// Filter the body classes
  foreach( $blacklist as $val ) {
    if (!in_array($val, $wp_classes)) : continue;
    else:
      foreach($wp_classes as $key => $value) {
      if ($value == $val) unset($wp_classes[$key]);
      }
    endif;
  }
endif;   // Add the extra classes back untouched
return array_merge($wp_classes, (array) $extra_classes);
}

После этого остается только внести изменения в style.css для правильного отображения отдельных элементов. Например,

.single #author-info {
    background: #f9f9f9;
    border-top: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
    margin: 2.2em 0% 0 0%;
    padding: 20px 35.4%;
}

А также для лучшего отображения области комментариев

#respond {
width: auto;
}
.commentlist {
width: auto;
}
.commentlist > li.comment {
margin: 0px 0px 20px 102px;
width: auto;
}

Теперь небольшое дополнение. Касательно строки кода

if( is_single() || is_page() ) :

Если вы не хотите, чтобы сайдбар отображался на статичных страницах, то просто не изменяйте файл page.php и уберите из строки кода, показанной выше

|| is_page()

Приведенный выше код также затрагивает и страницы вложений. Если вы хотите, чтобы сайдбар отображался и на этих страницах, то измените файл image.php и добавьте строку

<?php get_sidebar(); ?>

до вызова get_footer(). Также придется стили .image-attachment div.attachment. Если же вы хотите, чтобы страницы вложение были без боковой колонки, то в функции blacklist_body_class измените строку проверки типа страниц на

if( (is_single() && !is_attachment()) || is_page() ) :

Кстати, существует и альтернативное решение — плагин Twenty Eleven Theme Extensions. Но он не обновляется уже очень давно и неизвестно насколько он совместим с текущими версиями WordPress.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.