Intereting Posts
Могу ли я вызвать пользовательский плагин с прямым URL-адресом Изменить перенаправление сроков обновления Вместо изображений появляется подозрительная мессаж Почему WordPress нужен мой приватный ключ ssh для обновления? Очистка: лучший способ удалить комментарии WooCommerce из таблицы wp_comments Как предоставить значение для «selected» в wp_dropdown_categories () для «нескольких» опций Запрос последних изображений в нескольких сообщениях Все пользователи> Список пользователей> Обновление пользовательского поля Meta Field Inline не удалось загрузить wp-admin / admin-ajax.php Как добавить правила перезаписи, чтобы указать папку uploads в субдомен Как получить липкий пост в сыром sql? 2.9 до 3.0: Плюсы и минусы модернизации? Нужна помощь в расшифровке сообщений об ошибках и предупреждениях Добавление поля только к одной странице Сообщения и Страницы: 404 Страница не найдена

Отображение связанных записей в пользовательском типе сообщений по пользовательской таксономии

Я пытаюсь отображать связанные записи по пользовательской таксономии (product_tags) в настраиваемом типе сообщений (продукты). Следующий код работает, но он игнорирует posts_per_page .

Есть идеи?

global $post; $terms = get_the_terms( $post->ID , 'product_tags', 'string'); $do_not_duplicate[] = $post->ID; if(!empty($terms)){ echo '<strong>Related Products</strong>'; foreach ($terms as $term) { query_posts( array( 'post_type' => 'products', 'product_tags' => $term->slug, 'posts_per_page' => 3, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'post__not_in' => $do_not_duplicate) ); if(have_posts()) { while ( have_posts() ) : the_post(); $do_not_duplicate[] = $post->ID; ?> <div class="single_related"> <?php if (has_post_thumbnail()) { ?> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"> <?php the_post_thumbnail( 'related_sm', array('alt' => get_the_title()) ); ?> </a> <?php } else { ?> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> <?php } ?> </div> <?php endwhile; wp_reset_query(); } } } 

Если вы хотите запросить несколько терминов таксономии, вы можете использовать более продвинутый аргумент tax_query запросов WP_Query. Например

 //Get array of terms $terms = get_the_terms( $post->ID , 'product_tags', 'string'); //Pluck out the IDs to get an array of IDS $term_ids = wp_list_pluck($terms,'term_id'); //Query posts with tax_query. Choose in 'IN' if want to query posts with any of the terms //Chose 'AND' if you want to query for posts with all terms $second_query = new WP_Query( array( 'post_type' => 'products', 'tax_query' => array( array( 'taxonomy' => 'product_tags', 'field' => 'id', 'terms' => $term_ids, 'operator'=> 'IN' //Or 'AND' or 'NOT IN' )), 'posts_per_page' => 3, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'post__not_in'=>array($post->ID) ) ); //Loop through posts and display... if($second_query->have_posts()) { while ($second_query->have_posts() ) : $second_query->the_post(); ?> <div class="single_related"> <?php if (has_post_thumbnail()) { ?> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"> <?php the_post_thumbnail( 'related_sm', array('alt' => get_the_title()) ); ?> </a> <?php } else { ?> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> <?php } ?> </div> <?php endwhile; wp_reset_query(); } 

Примечание: похоже, что это может быть «вторичный цикл», т. Е. Не «основной» цикл (где отображаются сообщения / одна запись). Если это так, вы не должны использовать query_posts . См. Этот отличный вопрос .

Возможно, это неправильное решение, но я бы начал с переноса $term->slug :

 foreach ($terms as $term) { $termSlug = $term->slug; query_posts( array( 'post_type' => 'products', 'product_tags' => $termSlug, 'posts_per_page' => 3, ...