Автор: Architect Of Ruin
Новая тема Twenty Eleven всем бы была хороша, если бы не отсутствие сайдбара на некоторых страницах. Как я понял, многие хотят вернуть сайдбар, причем быстро и без особых усилий. В поисках необходимой информации я наткнулся на одно хорошее руководство, которое описывает процесс установки сайдбара для отдельных записей и страниц. Учитывая, как много пользователей желают сделать это, в ближайшее время стоит ожидать плагина, который выполнял бы все действия в автоматическом режиме. Однако пока такого плагина нет, пользователям приходится проводить необходимые изменения вручную.
Вернуть сайдбар довольно сложно, поскольку файл style.css с каждой новой версией все больше и больше разрастается. Разобраться во всех этих стилях можно лишь после длительного и скрупулезного изучения WordPress, на что требуется время и желание. Ни того, ни другого у людей обычно нет, особенно если их блог связан с каким-либо бизнесом. Поэтому давайте пошагово рассмотрим процесс возвращения сайдбара.
Способ первый: лобовая атака
Шаг первый
Переходим в редактор темы, открываем файл single.php, ищем в нем следующую строку:
[raw]
[php]<?php get_footer (); ?>[/php]
[/raw]
и размещаем над ней следующий код:
[raw]
[php]<?php get_sidebar ();?>[/php]
[/raw]
Сохраняем файл.
Шаг второй
Открываем файл style.css. В самый конец этого файла заносим следующие стили:
[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; }
[/css]
Все готово. Просто и быстро.
Способ второй: тщательное планирование
Шаг первый
На первом шаге нам понадобится создать дочернюю тему. Для этого мы создадим подпапку в папке /wp-content/themes и назовем ее, к примеру, twentyelevenchild. В эту папку нужно будет поместить файл style.css, который должен содержать следующий код:
[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);
[/css]
Затем в эту же папку нужно добавить файл functions.php; мы вернемся к нему позже. Шаг второй
Возвращаем сайдбар. Для этого нам понадобится открыть файл single.php и/или page.php и добавить в него следующую строку:
перед строкой
Шаг третий
Подавляем действие .singular body_class для отдельных записей и страниц. Чтобы достичь этого, необходимо добавить следующий фильтр в файл functions.php, находящийся в папке с нашей дочерней темой:
[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);
}
[/php]
Шаг четвертый
Настраиваем style.css дочерней темы. К примеру, стили могут быть следующими:
[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%;
}
[/css]
С помощью стилей дочерней темы можно изменить представление и других элементов. Все зависит от требований автора.
Источники:
http://wordpress.stackexchange.com/questions/15850/remove-classes-from-body-class
http://www.transformationpowertools.com/wordpress/twenty-eleven-sidebar-on-single-posts-and-pages
Первоначально желание вставить сайдбар на записи было и у меня.
И я это сделал, но когда один из моих сайтов попал под фильтр Яши из-за того. что ссылки в сайдбаре на популярные сайты с главной проходили по записям как сквозные. И расценивались Яндексом такие ссылки как коммерческие. Я учел это, и не стал включать сайдбар в записях. ИМХО.
С уважением, Александр Афанасьев.
У меня Яша не видит ссылки с сайдбара т.к. они подключаются скриптом. Т.е. по сути грузятся как AJAX. Так и запись загружается, не ждёт пока загрузится сайдбар и для поисковиков сайдбар не виден.
Для меня пока это темный лес. Но хочу все (основы) изучить и применить на своих WP. Темы уже правлю сам. Если знаете, то подскажите, почему Редактор сайта не видит дочернюю тему WP, конкретно — файл css? Приходится редактировать через сервер или с помощью FilleZilla. Тестовый сайт - voltest.ru
С уважением, Александр Афанасьев.
Под дочерней темой вы имеете в виду неактивную тему? В любом случае редактирование через сервер (правка в notepad++ или подобном) намного быстрее и надежнее. У меня два редактора стоят типа блокнота для редактирования. По-моему в обоих есть синхронизация с сервером даже. Удачи в редактировании!
Под дочерней темой вы имеете в виду неактивную тему?
дочерняя тема — как раз активная тема, и после обновления основной темы правки в дочерней теме остаются сохраненными.
Здесь voltest.ru — обкатываю все правки в темах, вместо локального сервера. Сейчас заинтересовала тема TwentyEleven.
С уважением, Александр Афанасьев.
Здравствуйте, Александр!
Когда я завел блог такого понятия вроде еще не было, все правки делал «по живому». Теперь буду знать о такой возможности.
Считаю, что локальный сервер все-таки лучше т.к. У вас всегда будет актуальная копия вашего блога под рукой. Нужно это потому, что когда ваш блог станет популярным, найдутся желающие его взломать и встроить свои вредоносные скрипты. У меня были такие случаи.