Расширенное использование вложений WordPress: Создание специального изображения для категории
СКАЧАТЬ ИСХОДНЫЕ ФАЙЛЫ | ПОСМОТРЕТЬ ДЕМО

Эта статья является заключительной из серии о работе с изображениями во вложениях WordPress, которые предоставляют нам дополнительные возможности.
В этой серии статей я рассказываю:
- О присвоении вложениям категорий и таксономий;
- О создании запросов медиафайлов по категориям и таксономиям для вывода в пользовательском цикле;
- Об использовании запросов таксономий и категорий изображений для их вывода на страницах архивов;
- О добавлении изображений терминам и таксономиям в качестве "специального".
В первой части я показала, как создать новые таксономии для вложений. Во второй части я показала, как создать файл пользовательского шаблона для документов и добавить цикл, который выводит ссылки на медиафайл для каждого документа. А в третьей части я создала файл пользовательского шаблона для таксономии gallery-category, который выводит все изображения с данным термином в галерее на странице архива.
В этой заключительной статье я расскажу, как присвоить изображению категорию, а затем отредактировать шаблон архива категории, чтобы вывести это изображение в качестве "специального". Аналогичным образом вы можете сделать то же самое для терминов тегов или таксономий.
Для этой статьи я создам дочернюю тему от темы twentyfourteen. Созданная тема включает в себя файл функций и файл пользовательского шаблона для архивов категорий. Вы можете скачать эту тему по ссылке.
Что вам понадобится
- Установленная система WordPress;
- Доступ по FTP (или установленный локальный веб-сервер);
- Редактор кода.
1. Применение категорий к вложениям
По умолчанию WordPress не позволяет назначать категории и теги для вложений. Как легко это исправить, я показала в предыдущих статьях по назначению категорий и тегов для вложений.
Примечание: Этот метод работает для тегов и категорий. Если вы применяете его для собственных таксономий, то необходимо во время регистрации таксономии указать вложения в качестве типа записей, к которым она применяется. Данная процедура описана в первой части этой серии.
В папке темы создайте файл с именем functions.php и добавьте в него следующий код:
<?php
// добавление категорий для вложений
function wptp_add_categories_to_attachments() {
register_taxonomy_for_object_type( 'category', 'attachment' );
}
add_action( 'init' , 'wptp_add_categories_to_attachments' );
?>
Здесь я использовала функцию register_taxonomy_for_object_type(), чтобы добавить категории для вложений. Теперь, когда вы перейдете в раздел Медиафайлы> Библиотека, вы увидите, что категории уже подключены для медиафайлов.
Дальше нам нужно добавить несколько изображений: по одному для каждой категории. Вы также должны добавить еще одну категорию под названием «Featured» и назначить ее для каждого изображения.
На рисунке ниже приведен снимок панели редактирования, в которой выводятся и категории:

На этом скриншоте приведены все мои изображения с назначенными категориями:

Я также добавлю несколько записей и помещу их в соответствующие категории, чтобы они отображались на страницах архивов:

2. Создание шаблона категории
Далее нам нужно создать пользовательский шаблон категории. Так как моя тема является дочерней от twentyfourteen, я скопирую в нее файл category.php этой темы, с некоторыми изменениями в начальных комментариях:
<?php
/**
* The template for displaying Category pages
* Custom template which displays a featured image first.
* Supports Part 4 of tutorial series on Advanced Use of Images in WordPress for WPTutsplus
*/ get_header(); ?>
<section class="content-area" id="primary">
<div class="site-content" id="content" role="main"><?php if ( have_posts() ) : ?>
<header class="archive-header">
<h1 class="archive-title"></h1>
<?php
// Показать дополнительное описание термина.
$term_description = term_description();
if ( ! empty( $term_description ) ) :
printf( '<div class="taxonomy-description">%s</div>', $term_description );
endif;
?>
</header><!-- .archive-header -->
<?php
// Запуск цикла.
while ( have_posts() ) : the_post();
/*
* Include the post format-specific template for the content. If you want to
* use this in a child theme, then include a file called called content-___.php
* (where ___ is the post format) and that will be used instead.
*/
get_template_part( 'content', get_post_format() );
endwhile;
// Переход к предыдущей/следующей странице.
twentyfourteen_paging_nav();
else :
// Если контент не существует, подключить шаблон "No posts found".
get_template_part( 'content', 'none' );
endif;
?></div><!-- #content -->
</section><!-- #primary -->
<?php get_sidebar( 'content' ); get_sidebar(); get_footer(); ?>
3. Добавление в шаблон категории пользовательского запроса
Выше основного цикла добавляем пользовательский цикл. После закрытия тега </ h1> вставьте следующий код:
<?php
// вывод специального изображения для категории
// определение текущей категории
$currentcat = get_queried_object();
$currentcatname = $currentcat->slug;
?>
Этот код определяет текущую отображаемую категорию с помощью get_queried_object().
Ниже с помощью WP_Query определяются аргументы пользовательского запроса:
<?php
// определение аргументов запроса для специального изображения
$args = array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'category_name' => $currentcatname,
);
$query = new WP_Query( $args );
?>
Данный код определяет любые вложения в текущей категории, а также в "featured". Обратите внимание, что из-за способа, с помощью которого WordPress задает статусы вложений, вам необходимо использовать в качестве аргумента 'post_status' => 'inherit'.
Теперь ниже добавьте цикл:
<?php
// Цикл
while ( $query->have_posts() ) : $query->the_post();
// определение атрибутов для вывода изображения
$imgattr = array(
'alt' => trim( strip_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) ),
);
?>
// Вывод изображения
<div class="category-image"></div>
<?php
endwhile;
// сброс запроса для выполнения запроса по умолчанию
wp_reset_postdata(); ?>
Убедитесь, что вы не пропустили wp_reset_postdata() в конце, иначе основной запрос для архива категории работать не будет.
После этого сохраните шаблон категории и откройте в браузере одну из страниц архивов категории. Она должна выглядеть примерно так, как показано на скриншоте в начале статьи.
Заключение
В этой серии из четырех статей я продемонстрировала несколько методов работы с изображениями в WordPress. К ним относятся:
- Регистрация таксономии для использования с вложениями;
- Создание страницы списка документов с помощью пользовательского шаблона;
- Создание страницы для отображения галереи изображений заданной категории с помощью пользовательского шаблона;
- Создание "специального изображения" для каждой категории и его вывод на странице архива категории.
Как видите, в WordPress с изображениями и медиафайлами можно сделать гораздо больше, чем просто прикрепить их к записи или использовать в качестве "специального изображения". Вы можете запросить их так же, как и любые другие типы записей и вывести ссылки на документы или отобразить изображения.