Здравствуйте. Скачал тему для wordpress "Rowling". В этой теме в статьях выводятся миниатюры последних опубликованных статей в рубрике. Я бы хотел чтобы выводились похожие записи по меткам (рандомно) и надеюсь, что вы мне поможете с этим. Вот код из functions.php Код (Text): function rowling_related_posts($number_of_posts) { ?> <div class="related-posts"> <p class="related-posts-title"><?php _e('Read Next','rowling'); ?> →</p> <div class="row"> <?php // Check for posts in the same category global $post; $cat_ID = array(); $categories = get_the_category(); foreach($categories as $category) { array_push($cat_ID,$category->cat_ID); } $related_posts = new WP_Query( apply_filters( 'rowling_related_posts_args', array( 'posts_per_page' => $number_of_posts, 'post_status' => 'publish', 'category__in' => $cat_ID, 'post__not_in' => array($post->ID), 'meta_key' => '_thumbnail_id', 'ignore_sticky_posts' => true ) ) ); if ($related_posts->have_posts()) : while ( $related_posts->have_posts() ) : $related_posts->the_post(); ?> <?php global $post; ?> <a class="related-post" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> <?php if ( has_post_thumbnail() ) : ?> <?php the_post_thumbnail('post-image-thumb') ?> <?php endif; ?> <p class="category"> <?php $category = get_the_category(); echo $category[0]->cat_name; ?> </p> <h3 class="title"><?php the_title(); ?></h3> </a> <?php endwhile; ?> <?php else: // If there are no other posts in the post categories, get random posts ?> <?php $related_posts = new WP_Query( apply_filters( 'rowling_related_posts_args', array( 'posts_per_page' => $number_of_posts, 'post_status' => 'publish', 'orderby' => 'rand', 'post__not_in' => array($post->ID), 'meta_key' => '_thumbnail_id', 'ignore_sticky_posts' => true ) ) ); if ($related_posts->have_posts()) : while ( $related_posts->have_posts() ) : $related_posts->the_post(); ?> <?php global $post; ?> <a class="related-post" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> <?php if ( has_post_thumbnail() ) : ?> <?php the_post_thumbnail('post-image-thumb') ?> <?php endif; ?> <p class="category"> <?php $category = get_the_category(); echo $category[0]->cat_name; ?> </p> <h3 class="title"><?php the_title(); ?></h3> </a> <?php endwhile; ?> <?php endif; ?> <?php endif; ?> </div> <!-- /row --> <?php wp_reset_query(); ?> </div> <!-- /related-posts --> <?php } А вот этот код из single.php Код (Text): <?php rowling_related_posts('3'); // Number of related posts to display ?>
Не могли бы вы написать, что на что нужно заменить. Единственное что я смог сделать это чтобы миниатюры отображались рандомно, добавив Код (Text): 'orderby'=>rand,
Не могли бы вы мне пояснить, что конкретно вы мне предлагаете. Воспользоваться инструкцией, которая находятся по ссылке или заменить 'category__in'=>$cat_ID на 'tag__in' => $tag_ids? Первый вариант мне не подходит, а второй просто так не работает.
Если коротко: параметр фильтра tag__in это то, что тебе нужно. Пример по ссылке. Что убрать, а что оставить -- сам разберешся. Удачи!
Сделал так, вроде как работает Код (Text): function rowling_related_posts($number_of_posts) { ?> <div class="related-posts"> <p class="related-posts-title"><?php _e('Похожие статьи','rowling'); ?> →</p> <div class="row"> <?php // Check for posts in the same category global $post; $tag_ids = array(); $tags = wp_get_post_tags($post->ID); foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id; $related_posts = new WP_Query( apply_filters( 'rowling_related_posts_args', array( 'posts_per_page' => $number_of_posts, 'post_status' => 'publish', 'tag__in' => $tag_ids, 'orderby' => 'rand', 'post__not_in' => array($post->ID), 'meta_key' => '_thumbnail_id', 'ignore_sticky_posts' => true ) ) ); if ($related_posts->have_posts()) : while ( $related_posts->have_posts() ) : $related_posts->the_post(); ?> <?php global $post; ?> <a class="related-post" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> <?php if ( has_post_thumbnail() ) : ?> <?php the_post_thumbnail('post-image-thumb') ?> <?php endif; ?> <p class="title"><?php the_title(); ?></p> </a> <?php endwhile; ?> <?php else: // If there are no other posts in the post categories, get random posts ?> <?php $related_posts = new WP_Query( apply_filters( 'rowling_related_posts_args', array( 'posts_per_page' => $number_of_posts, 'post_status' => 'publish', 'orderby' => 'rand', 'post__not_in' => array($post->ID), 'meta_key' => '_thumbnail_id', 'ignore_sticky_posts' => true ) ) ); if ($related_posts->have_posts()) : while ( $related_posts->have_posts() ) : $related_posts->the_post(); ?> <?php global $post; ?> <a class="related-post" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> <?php if ( has_post_thumbnail() ) : ?> <?php the_post_thumbnail('post-image-thumb') ?> <?php endif; ?> <p class="title"><?php the_title(); ?></p> </a> <?php endwhile; ?> <?php endif; ?> <?php endif; ?> </div> <!-- /row --> <?php wp_reset_query(); ?> </div> <!-- /related-posts --> <?php }