Статьи

Расширенные вложения в WordPress: создание пользовательских запросов

Это учебное пособие является вторым в серии из четырех частей, в которой вы изучите некоторые приемы работы с изображениями во вложениях в WordPress, которые предоставляют расширенные возможности.

В этой серии я расскажу:

  • присвоение категорий и таксономий приложениям,
  • запрос медиа-файлов по таксономии, чтобы вы могли выводить их в пользовательском цикле,
  • использование таксономических запросов для изображений для отображения их на страницах архива,
  • добавление изображения к категории или таксономическому термину в качестве категории или элемента «рекомендуемое изображение»

В первой части я продемонстрировал, как создавать новые таксономии для вложений. В частях 2 и 3 я покажу вам, как создавать пользовательские циклы для отображения вложений в шаблоне. В этом уроке я создам пользовательский файл шаблона для документов и создам цикл, который отображает ссылку на медиа-файл для каждого документа.

Примечание. Если вы хотите применить существующие категории и теги к медиафайлам, см. Мое руководство по назначению категорий и тегов для вложений .

Чтобы следовать этому уроку, вам понадобится следующее:

  • установка для разработки WordPress
  • FTP-доступ (или MAMP или аналогичный, если вы работаете локально)
  • редактор кода

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

Если вы создаете пользовательскую тему, используя шаги, которые я здесь выполняю, вам также необходимо убедиться, что плагин, созданный в первой части, активирован — новый файл шаблона не будет работать без него.

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

Первый шаг — создать дочернюю тему. Создайте новую папку в каталоге тем, дайте ей соответствующее имя и добавьте в style.css новый файл style.css .

Примечание. Если вы добавляете шаблон в существующую тему, вы можете пропустить этот шаг.

В таблицу стилей добавьте следующее:

01
02
03
04
05
06
07
08
09
10
11
12
13
/*
 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»);

Это создаст новую дочернюю тему двадцать четырнадцатой темы. Вам не нужно ничего добавлять в эту таблицу стилей.

Чтобы отобразить вложения в таксономии document-category которую вы настроили, если вы читали первый учебник этой серии, вам нужно создать файл шаблона таксономии.

В вашей новой дочерней теме добавьте файл под названием taxonomy-document-category.php .

Перед добавлением пользовательского цикла для вложений вам нужно добавить разметку, чтобы обернуть ее, которую вы можете либо скопировать из файла в родительской теме, либо взять из кода ниже.

Примечание. Если вы используете свою собственную тему, скопируйте этот код из одного из файлов шаблонов вашей темы, но не указывайте содержимое цикла.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
<?php
/**
  * template for displaying documents
  * uses a custom query which displays a link to the atachment file instead of outputting the content
  */ 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 — ‘ .
      </header><!— .page-header —>
    </div><!— #content —>
</div><!— #primary —>
<?php get_sidebar( ‘content’ );
</div><!— #main-content —>
 
<?php get_sidebar();

Обратите внимание, что я использовал get_queried_object для вывода заголовка страницы внутри элемента h1.

По умолчанию основной запрос WordPress не включает вложения. Один из способов обойти это — добавить новый запрос в файл шаблона с помощью WP_Query , но имеет смысл придерживаться основного запроса, так как WordPress будет работать в любом случае. Для этого вы используете фильтр parse_query .

Так что вам нужно добавить это в вашу тему. Создайте файл functions.php в своей теме и добавьте в него следующее:

01
02
03
04
05
06
07
08
09
10
11
12
<?php // add attachments to the main query using parse_query function wptutsplus_add_attachments_to_tax_query() {
     global $wp_query;
     // When inside a custom taxonomy archive include attachments
     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, но только когда отображается архив для одной из двух таксономий, примененных к вложениям.

Наконец, в файл шаблона, созданный на шаге 2, добавьте следующее после закрывающего </header> :

1
2
3
4
5
6
7
<?php
 if ( have_posts() ) :
 else :
    // If no content, include the «No posts found» template.
    get_template_part( ‘content’, ‘none’ );
endif;
?>

Здесь я использую wp_get_attachment_url() которая связывается непосредственно с самим файлом — если вы хотите вместо этого ссылаться на страницу вложения, вы бы использовали get_attachment_link() .

Наконец, сохраните свой код и взгляните на свою страницу архива. Я добавил несколько документов на свой сайт (которые я скачал из Википедии), как вы можете видеть на скриншоте моей медиатеки:

передовой потребительные из-приложений-в-WordPress-часть-2-документы-медиа-библиотека

На приведенном ниже снимке экрана показана страница моего архива для термина «Открытый исходный код» в таксономии document-category . Если я нажму на любую из этих ссылок, я попаду прямо к самому документу.

передовые потребительной из-приложений-в-Wordpress-части-2-документы-архив-страница

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

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