Intereting Posts
как показывать сообщения на разных страницах, если число сообщений на странице равно одному Проблема создания пользовательской страницы категории с разбиением на страницы Облицовка некоторых проблем по двум частям. Названия таксономии типа таможни. Меню Несколько таксономий Перейдите в блог и получите контент из этого блога Выдержки и пользовательские типы сообщений Редактирование части ссылки, которая повторяется на веб-сайте Редактировать заголовок страницы в пользовательском плагине Как получить содержимое пользовательского типа сообщений через идентификатор сообщения в wordpress Могу ли я остановить размер медиафайлов WordPress Двадцать четырнадцать: изменение Читать дальше Каков правильный способ обновления параметров WordPress Установка WordPress локально Как заменить протокол URL с помощью PHP? Пользовательская таблица базы данных для плагина, не созданного при активации

Перебирайте сообщения по каждому члену и исключайте дубликаты должностей, назначенных нескольким терминам

Хорошо, я постараюсь пойти немного подробнее. То, что я сделал с этим кодом, – это список художников, упорядоченных по алфавиту. В этом списке я показываю все соответствующие новостные сообщения этому термину. Это прекрасно работает. Но если есть новости, которые соответствуют более чем одному из художников, я получаю один и тот же пост под каждым художником, соответствующим этой должности. И то, что я хочу достичь, это показать этот пост / новости только для первого исполнителя, который соответствует этому сообщению. Вместо того, чтобы показывать сообщение несколько раз для каждого исполнителя в списке. Показанный код работает для перечисления художников и показывает соответствующие сообщения внизу. Спасибо заранее и извините за предыдущее шаткий описание.

<?php foreach ( $artist_terms as $artist_term ): ?> <?php $news = get_posts(array ( 'numberposts' => 0, 'order' => 'DESC', 'meta_key' => 'date', 'value' => 'date(yyyy-mm-dd)', 'orderby' => 'meta_value', 'post_type' => 'news', 'artist' => $artist_term->slug )); ?> <? if($news): ?> <li> <?php foreach ($news as $post) : ?> <div> <?php the_post_thumbnail();?> <?php $artist_name = strip_tags (get_the_term_list( get_the_ID(), 'artist')); echo $artist_name; ?> </div> <?php endforeach; ?> </li> <?php endif; ?> <?php endforeach; ?> 

альтернатива этому коду, я нашел этот http://wordimpress.com/loop-through-categories-and-display-posts-within/ . Это делает то же самое, но также не имеет решения для дубликатов.

 <?php /* * Loop through Categories and Display Posts within */ $post_type = 'news'; // Get all the taxonomies for this post type $taxonomies = get_object_taxonomies( array( 'post_type' => $post_type ) ); foreach( $taxonomies as $taxonomy ) : // Gets every "category" (term) in this taxonomy to get the respective posts $terms = get_terms( $taxonomy ); foreach( $terms as $term ) : ?> <?php// echo $term->name; ?> <?php $ids = array(); $ids[] = get_the_ID(); ?> <?php $args = array( 'post_type' => $post_type, 'posts_per_page' => -1, //show all posts 'tax_query' => array( array( 'taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $term->slug, 'post__not_in' => $ids ) ) ); $posts = new WP_Query($args); if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post(); ?> <?php $args2 = array( 'post_type' => $post_type, 'posts_per_page' => -1, //show all posts 'tax_query' => array( array( 'taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $term->slug, 'post__not_in' => $ids ) ) ); $posts2 = new WP_Query($args2); ?> <?php if(has_post_thumbnail()) { ?> <?php the_post_thumbnail(); ?> <br> <?php } /* no post image so show a default img */ else { ?> <img src="<?php bloginfo('template_url'); ?>/assets/img/default-img.png" alt="<?php echo get_the_title(); ?>" title="<?php echo get_the_title(); ?>" width="110" height="110" /> <?php } ?> <br> <?php echo get_the_title(); ?> <br><br><br> <?php endwhile; endif; ?> <?php endforeach; endforeach; ?> 

Solutions Collecting From Web of "Перебирайте сообщения по каждому члену и исключайте дубликаты должностей, назначенных нескольким терминам"

value не является допустимым параметром для get_posts а шаблон запроса метаданных tax => slug давно устарел , как и numberposts . Даже если value было действительным, трудно понять, как будет выполняться буквальная date(yyyy-mm-dd) .

Во всяком случае, я считаю, что применение фильтра posts_groupby сделает это. Из Кодекса :

 add_filter( 'posts_groupby', 'my_posts_groupby' ); function my_posts_groupby($groupby) { global $wpdb; $groupby = "{$wpdb->posts}.ID"; return $groupby; } 

Это заставит сообщения появляться только один раз в результатах.