Có lẽ các bạn đều nhận thấy rõ tác dụng của danh sách bài viết liên quan (related post) ở cuối mỗi bài viết trên blog. Nó giúp cho số lượng pageviews trên blog tăng lên đáng kể, mà đây là một trong các yếu tố quyết định đến thứ hạng blog của bạn. Có rất nhiều plugins có thể tạo ra được danh sách này chẳng hạn như: Yet Another Related Post hay nrelate Related Content. Nhưng nhiều bạn thường không thích sử dụng plugins vì nó ảnh hưởng đến tốc độ của blog. Vì vậy, mình sẽ giới thiệu một đoạn code có thể giúp bạn tạo ra danh sách này mà không cần tới plugins. Đây là đoạn code mình đang áp dụng cho blog của mình.
Các bạn chép đoạn code sau đây vào file functions.php trong theme mà bạn đang sử dụng:
Danh sách bài viết liên quan theo category
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
function get_samepost_category() { $categories = get_the_category($post->ID); if ($categories): $category_ids = array(); foreach($categories as $individual_category): $category_ids[] = $individual_category->term_id; $args=array( 'category__in' => $category_ids, 'post__not_in' => array($post->ID), 'showposts'=>5, 'ignore_sticky_posts'=>1, 'orderby'=>rand); $my_query = new wp_query($args); endforeach; if( $my_query->have_posts() ): if( is_single() ):?> <div class="sametitle">Có thể bạn chưa xem</div> <div class="same"> <ul> <?php while ($my_query->have_posts()): $my_query->the_post();?> <li> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; ?> </ul> </div> <?php endif; endif; endif; wp_reset_query(); } |
Danh sách bài viết liên quan theo tag
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
function get_samepost_tag() { $tags = wp_get_post_tags($post->ID); if ($tags): $first_tag = $tags[0]->term_id; $args = array( 'tag__in' => array($first_tag), 'post__not_in' => array($post->ID), 'showposts' => 5, 'ignore_sticky_posts' => 1, 'orderby'=>rand); $related_query = new WP_Query($args); if ($related_query->have_posts()) : if( is_single() ):?> <div class="sametitle">Các bài viết liên quan</div> <div class="same"> <ul> <?php while ($related_query->have_posts()): $related_query->the_post(); ?> <li> <a href=”<?php the_permalink() ?>” > <?php the_title();?> </a> </li> <?php endwhile; ?> </ul> </div> <?php endif; endif; endif; wp_reset_query(); } |
Tiếp theo, mở file single.php và thêm đoạn code:
1 |
<?php get_samepost_category(); ?> |
hoặc
1 |
<?php get_samepost_tag(); ?> |
vào vị trí mà bạn muốn hiển thị danh sách bài viết liên quan, thường là ngay phía sau đoạn code
1 |
<?php the_content(); ?> |
Đối với các bạn sử dụng Genesis, bạn không sử dụng file single.php mà sẽ thêm đoạn code này vào ngay phía trên code lúc nãy:
1 |
add_action( 'genesis_after_post_content', 'get_samepost_category' ); |
Các bạn có thể vào file style.css, bổ sung thêm các lớp .sametitle và .same cho phù hợp với blog của bạn.
Chúc bạn thành công! {c1}