Intereting Posts
Заблокировано / Разблокировано в заголовке Функция, позволяющая создать единый почтовый шаблон на основе пользовательской таксономии? Реализация липкого набора на WordPress Структура тегов не работает Разрешить пользователям доступ только к настраиваемому типу сообщений Изменить аргументы для родительской темы `wp_register_style` через дочернюю тему Пользовательские данные типа сообщений Пользовательское поле, добавленное в форме комментария, не отображается в редакторе Как добавить встроенный стиль в тег <p>, выводимый в the_content (), используя PHP? Исключить определенную категорию из последних обновлений Пользовательский тип сообщения, шаблон страницы, не захватывающий шаблон страницы Эта же панель во всех постах, как в категории Изменение базового языка одного плагина Обновление WordPress – лучший подход (обновление ядра wp, плагинов и db) Как показать один контент в другом сообщении, который имеет одинаковые условия?

Архив таксономии + вложения запросов = дублирующиеся результаты

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

У меня есть несколько циклов на этой странице – один для отображения связанных сообщений, другой – для отображения связанных продуктов (пользовательский пост), а другой – для отображения связанных изображений. Пользовательские сообщения и сообщения работают хорошо, но я не могу показать вложения правильно. : S

<?php $queried_object = get_queried_object(); $term_id = $queried_object->term_id; $args = array( 'post_status' => 'inherit', 'numberposts' => 0, 'post__not_in' => array_merge($do_not_duplicate,get_option( 'sticky_posts' )), 'post_type' => 'attachment', ); $args['tax_query'] = array( array( 'taxonomy' => 't-arte', 'terms' => $term_id, 'field' => 'id', ), ); ?> <?php $t = $data['t-arte']; $array = explode(" ", $t); $array = array_unique($array);?> <?php $media_query = array_unique($array); ?> <?php $media_query = get_posts($args); if( !empty( $media_query ) ) : foreach ($media_query as $media_query) : global $post; $post = $media_query; setup_postdata($media_query); ?> <div id="archivespage-media-item"> <?php $attachments = get_posts( $args ); if ( $attachments ) { foreach ( $attachments as $attachment ) { echo '<div id="imagem">'; the_attachment_link( $attachment->ID, true ); echo '</div>'; } }?> </div> <?php endforeach;else :?> <p>Ainda não temos nenhuma imagem relacionada :(</p> </div> <?php endif; ?> <?php wp_reset_query();?> 

Solutions Collecting From Web of "Архив таксономии + вложения запросов = дублирующиеся результаты"

Я думаю, проблема заключается в том, что вы передаете неправильные аргументы в запрос $attachments , в результате чего вы не должны получать запланированные сообщения в запросе $attachments .

Вот что вы делаете:

 $args = array( 'post_status' => 'inherit', 'numberposts' => 0, 'post__not_in' => array_merge($do_not_duplicate,get_option( 'sticky_posts' )), 'post_type' => 'attachment', ); $args['tax_query'] = array( array( 'taxonomy' => 't-arte', 'terms' => $term_id, 'field' => 'id', ), ); $attachments = get_posts( $args ); 

Таким образом, вы запрашиваете все сообщения, которые являются attachment пост-типа, а не только сообщения, которые прикреплены к текущему сообщению, зацикливаются в $media_query .

Вот как вы перебираете $media_query :

 foreach ($media_query as $media_query) : 

(Примечание: плохая форма. Попробуйте что-то вроде foreach ( $media_query as $media ) : вместо этого.)

Вам необходимо передать идентификатор текущего сообщения в запрос $attachments , как post_parent . Что-то простое может быть:

 $attachments = get_posts( array( 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_parent' => $media_query->ID 'numberposts' => 0 ) ); 

Я понял! Результат отобразит все вложения в определенном терминах на странице архива терминов. Спасибо Чип!

 <?php $queried_object = get_queried_object(); $term_id = $queried_object->term_id; global $wp_query; $original_query['tax_query'] = array( array( 'taxonomy' => 't-arte', 'terms' => $term_id, 'field' => 'id', ),); $original_query = (array) $wp_query; $attach_query = array( 'post_type'=> array( 'attachment' ), 'post_status' => array( null )); $args = array_merge($original_query['query_vars'], $attach_query); $media_query = new WP_Query( $args )?> <?php if($media_query->have_posts()) : while ($media_query->have_posts() ) : $media_query->the_post(); if( $post->ID == $do_not_duplicate ) continue; ?> <div id="archivespage-media-item"> <div id="imagem"> <?php echo wp_get_attachment_link($attachment->ID, 'bigger-thumb');?> </div> </div> <?php endwhile; else: ?> //do stuff </div>