Расширенное использование вложений 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. Если я кликну по любой из этих ссылок, то откроется сам документ:

Создание пользовательского цикла - 2

Заключение

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

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

Вадим Дворниковавтор-переводчик статьи «Advanced Use of Attachments in WordPress: Creating Custom Queries for Attachments»