Расширенное использование вложений WordPress: Создание пользовательских запросов для вложений
СКАЧАТЬ ИСХОДНЫЕ ФАЙЛЫ
Эта статья является второй из серии о работе с изображениями во вложениях WordPress.
В этой серии статей я рассказываю:
- О назначении вложениям категорий и таксономий;
- Запросах медиафайлов по категориям / таксономиям, чтобы вы могли вывести их в пользовательском цикле;
- Об использовании запросов таксономий / категорий для изображений, чтобы выводить их на страницах архивов;
- О добавлении изображений для терминов категорий или таксономий в качестве "специального изображения" категории или термина.
В первой части я показала, как создаются новые таксономии для вложений. Во второй и третьей частях я покажу вам, как создать пользовательский цикл для вывода вложений через шаблон. В этой статье я создам файл пользовательского шаблона для документов и цикл, который выводит ссылки на медиафайлы для каждого документа.
Примечание: Если вы хотите применять существующие категории и теги к медиафайлам, прочитайте статью о том, как назначать категории и теги для вложений.
Что вам понадобится
- Установленная система WordPress;
- Доступ по FTP (или установленный локальный сервер);
- Редактор кода.
В первой части я создала плагин, чтобы зарегистрировать таксономии, а в этой статье я создам собственную тему (дочернюю от темы twentyfourteen) с новым файлом шаблона, стилями и файлом функций.
Если вы создаете собственную тему, используя шаги, которые я описываю, то вы должны активировать плагин, созданный нами в первой части - новый файл шаблона без него работать не будет.
Вы можете просто скопировать код из плагина в файл функций вашей темы. Но лучше, чтобы пользовательские типы записей добавлялись через плагины, так как в этом случае они не зависят от темы. Код, рассматриваемый в этой статье, включает в себя плагин и новую дочернюю тему, которая будет работать только, если у вас установлена тема twentyfourteen.
1. Создание дочерней темы
Создайте новую папку в директории с темами, назовите ее соответственно и добавьте в папку новый файл style.css.
Примечание: Если вы добавляете шаблон в существующую тему, вы можете пропустить этот шаг.
В таблицу стилей добавьте следующий код:
/*
Theme Name: WPTutsPlus Advanced Use of Attachments - Part 2
Theme URI: http://rachelmccollin.co.uk/wptutsplus-advanced-use-of-attachments-in-wordpress/
Description: Theme to accompany Part 2 in tutorial series on advanced use of attachments
Author: Rachel McCollin
Author URI: http://rachelmccollin.co.uk
Template: twentyfourteen
Version: 1.0.0
Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
Text Domain: twenty-fourteen-child
*/
@import url("../twentyfourteen/style.css");
Мы создали новую дочернюю тему twentyfourteen. Больше никаких стилей добавлять не нужно.
2. Создание файла шаблона
Для отображения вложений в таксономии document-category, которую мы создали в первой части этой серии, нужно создать файл шаблона таксономии.
В папке новой дочерней темы добавьте файл taxonomy-document-category.php.
После этого нужно добавить разметку, в которую «оборачивается» пользовательский цикл. Ее код можно скопировать из файла родительской темы, либо взять из приведенного ниже примера.
Примечание: Если вы используете собственную тему, скопируйте код одного из файлов шаблонов вашей темы, но без содержимого цикла:
<?php
/**
* шаблон для вывода документов
* с помощью пользовательского запроса, который, вместо контента, выводит ссылку на файл вложения
*/ get_header();
?>
<div class="main-content" id="main-content">
<div class="content-area" id="primary">
<div class="site-content" id="content" role="main">
<header class="page-header">
<?php $queried_object = get_queried_object();
echo '<h1 class="page-title">Document Category - ' . $queried_object->name . '</h1>'; ?>
</header><!-- .page-header -->
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar( 'content' ); ?>
</div><!-- #main-content -->
<?php get_sidebar(); get_footer(); ?>
Обратите внимание, что для вывода заголовка страницы внутри элемента h1 я использовала get_queried_object.
3. Добавление вложения в основной запрос с помощью parse_query
По умолчанию основной WordPress запрос не включает в себя вложения. Один из способов обойти это - добавить новый запрос в файл шаблона, используя WP_Query, но я рекомендую использовать основной запрос, так как WordPress все равно будет выполнять его. Для этого можно использовать фильтр parse_query.
Создайте в папке темы файл functions.php, и добавьте в него следующий код:
<?php // добавление вложений в основной запрос с помощью фильтра parse_query и функции wptutsplus_add_attachments_to_tax_query() {
global $wp_query;
// Когда архив пользовательской таксономии включает вложения
if ( is_tax( array( 'document-category', 'gallery-category' ) ) ) {
$wp_query->query_vars['post_type'] = array( 'attachment' );
$wp_query->query_vars['post_status'] = array( null );
return $wp_query;
}
}
add_action('parse_query', 'wptutsplus_add_attachments_to_tax_query');
В этом коде использован фильтр parse_query для добавления вложений в основной запрос WordPress, когда на экране отображается архив одной из двух таксономий, применяемых к вложениям.
4. Создание пользовательского цикла
В файл шаблона, созданного в шаге 2, после закрытия тега добавьте следующий код:
<?php
if ( have_posts() ) :
else :
// Если контент не существует, включить шаблон "No posts found".
get_template_part( 'content', 'none' );
endif;
?>
Здесь я использовала функцию wp_get_attachment_url(), которая выводит ссылку непосредственно на вложение. Если хотите, чтобы вместо этого выводились ссылки на страницы вложений, то нужно использовать get_attachment_link().
Сохраните код и зайдите в раздел панели администрирования «Библиотека медиафайлов». На своем сайте я добавила несколько документов, которые скачала из Википедии:

На приведенном ниже скриншоте показана моя страница архива термина 'Open Source' таксономии document-category. Если я кликну по любой из этих ссылок, то откроется сам документ:

Заключение
Из этой статьи вы узнали, как использовать применяемые к вложениям таксономии, чтобы создавать пользовательские шаблоны и выводить список ссылок на загружаемые документы.
В следующей статье я покажу, как создать пользовательский шаблон для вывода изображений с данным термином таксономии gallery-category.