Смена картинок в заголовках рубрик WordPress нужна, если в вашем блоге соседствуют рубрики разных тематик.
Посмотрите на мой блог, на картинки в шапках рубрик «Астрономия» и «Морской аквариум». В одной рубрике звёздное небо с телескопом, а в другой — стайка морских рыб.
Можно выбрать что-то нейтральное для всего блога и не париться, но это скучно и безлико… Если раздел имеет узкую тематическую направленность, то хорошо бы её подчеркнуть.
Копался недолго — нашёл директорию своей темы Graphene, далее в файле header.php нашёл строку номер 56:
1 |
$header_img = graphene_get_header_image( $post_id ); |
Ага, то есть достаточно задать переменной header_img имя файла в зависимости от рубрики и можем показывать в заголовке каждой рубрики свою картинку! Осталось только определить, какой раздел активен…
Ну, это оказалось не так сложно. В админке WordPress заходим в меню «Записи», далее подменю «Рубрики». Видим список рубрик блога. Наводим мышку на ссылку любой рубрики и, не нажимая кнопку, смотрим вниз, в статусную строку. Видим там примерно такую ссылку:
1 |
http://info-7.ru/blog/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=3&post_type=post |
Конечно, у вас будет другое имя сайта и другие значения. Нам нужна только вот эта часть:
1 |
&tag_ID=3 |
То есть, идентификатор рубрики, на которую мы навели нашу мышку, будет равен цифре «3». Берём листок бумаги и записываем эти значения для каждой рубрики.
Далее возвращаемся в файл header.php и после уже найденной строки вставляем примерно такое:
1 2 3 4 5 6 7 8 9 10 |
$header_img = graphene_get_header_image( $post_id ); //Изменение стандартной картинки в шапке для некоторых рубрик. //echo the_category_ID(false); if (!is_front_page()) { if(the_category_ID(false)==2) {$header_img = "http://info-7.ru/blog/wp-content/uploads/2013/06/31.jpg";} else if(the_category_ID(false)==3) {$header_img = "http://info-7.ru/blog/wp-content/uploads/2013/06/MA.jpg";} } // |
В общем тут всё прозрачно: если открылась рубрика с ID=2, то мы меняем картинку в шапке на http://info-7.ru/blog/wp-content/uploads/2013/06/31.jpg и так далее для всех.
Эту строчку можно не писать, она выводит номер рубрики перед шапкой при отладке:
1 |
//echo the_category_ID(false); |
Обратите внимание, что все эти строчки лежат внутри проверки на то, что сейчас открыта не главная страница блога:
1 |
if (!is_front_page()) { |
Иначе, если обращаться к главной странице блога, то оказывается, что ID рубрики равен ID той рубрики в которую была добавлена последняя статья. То есть, при добавлении новой рубрики, картинка в заголовке, то есть в шапке главной страницы блога изменится на картинку последней пополненной рубрики. Где засела эта ошибка я не знаю — то ли в WordPress, то ли в теме Graphene. Ну, не важно, главное, что всё работает так как надо.
Одно плохо — пришлось лезть в исходный код темы. То есть, при обновлении темы эта вставка скорее всего исчезнет… ну ничего, останется эта запись в блоге, а значит я найду что и как надо исправить. Да и не собираюсь я пока ничего обновлять. Золотое правило сисадмина: «Работает? Не трогай!» 😉
1 комментарий
Автор
Со временем обнаружилась неприятность: WordPress всё-же не всегда верно определяет ID открываемой рубрики. Кривая в нём эта функция…
Например, если последняя добавленная статья принадлежит двум разным рубрикам, то при входе в одну их этих рубрик выдаётся ID той рубрики, у которой ID меньше. Я могу описать эту чехарду подробнее, но времени жаль на это непотребство…
Пока забил на этот глюк, поскольку у меня пересекаются только «Садоводство» и «Здоровье», а для них оказалось несложно подобрать одну общую картинку.
Если кто отыщет способ борьбы — напишите.