Twenty Eleven: вывод сайдбара для отдельных записей и страниц
Новая тема Twenty Eleven всем бы была хороша, если бы не отсутствие сайдбара на некоторых страницах. Как я понял, многие хотят вернуть сайдбар, причем быстро и без особых усилий. В поисках необходимой информации я наткнулся на одно хорошее руководство, которое описывает процесс установки сайдбара для отдельных записей и страниц. Учитывая, как много пользователей желают сделать это, в ближайшее время стоит ожидать плагина, который выполнял бы все действия в автоматическом режиме. Однако пока такого плагина нет, пользователям приходится проводить необходимые изменения вручную.
Вернуть сайдбар довольно сложно, поскольку файл style.css с каждой новой версией все больше и больше разрастается. Разобраться во всех этих стилях можно лишь после длительного и скрупулезного изучения WordPress, на что требуется время и желание. Ни того, ни другого у людей обычно нет, особенно если их блог связан с каким-либо бизнесом. Поэтому давайте пошагово рассмотрим процесс возвращения сайдбара.
Способ первый: лобовая атака
Шаг первый
Переходим в редактор темы, открываем файл single.php, ищем в нем следующую строку:
<?php get_footer(); ?>
и размещаем над ней следующий код:
<?php get_sidebar(); ?>
Сохраняем файл.
Шаг второй
Открываем файл style.css. В самый конец этого файла заносим следующие стили:
.singular #primary { margin: 0 -26.4% 0 0; } #nav-single { display: none; } .singular .entry-header .entry-meta { position: relative; } .singular .hentry { padding: 0; } .singular .entry-header, .singular .entry-content, .singular footer.entry-meta, .singular #comments-title { width: 100%; } .singular #content, .left-sidebar.singular #content { margin: 0 34% 0 7.6%; } .singular article .entry-title { padding-top: 0; } .singular .entry-meta .edit-link a { right: 0; top: 0; left: auto; }
Все готово. Просто и быстро.
Способ второй: тщательное планирование
Шаг первый
На первом шаге нам понадобится создать дочернюю тему. Для этого мы создадим подпапку в папке /wp-content/themes и назовем ее, к примеру, twentyelevenchild. В эту папку нужно будет поместить файл style.css, который должен содержать следующий код:
/* Theme Name: Twenty Eleven Child Author: alchymyth Description: a child theme, based on the 2011 theme for WordPress Author URI: http://wordpress.org/ Template: twentyeleven */ @import url(../twentyeleven/style.css);
Затем в эту же папку нужно добавить файл functions.php; мы вернемся к нему позже.
Шаг второй
Возвращаем сайдбар. Для этого нам понадобится открыть файл single.php и/или page.php и добавить в него следующую строку:
<?php get_sidebar(); ?>
перед строкой
<?php get_footer(); ?>
Шаг третий
Подавляем действие .singular body_class для отдельных записей и страниц. Чтобы достичь этого, необходимо добавить следующий фильтр в файл functions.php, находящийся в папке с нашей дочерней темой:
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%; }
С помощью стилей дочерней темы можно изменить представление и других элементов. Все зависит от требований автора.
Источники: http://dev-tips.com/featured/remove-an-item-from-an-array-by-value
http://wordpress.stackexchange.com/questions/15850/remove-classes-from-body-class
http://www.transformationpowertools.com/wordpress/twenty-eleven-sidebar-on-single-posts-and-pages
http://tricksmommy.com/2011/07/08/add-sidebar-in-single-post-pages-of-twenty-eleven-wordpress-theme/