Như bạn thường thấy dưới chi tiết một bài viết thường có thêm mục “Bài viết liên quan / Bài viết cùng chuyên mục” bài viết được lấy cùng “category” hay chuyên mục bài viết đó. Hiện tại có rất nhiều plugin hỗ trợ bạn giải quyết vấn đề này, nhưng ở khía cạnh nào đò nó không làm thỏa mãn bạn, bạn muốn tự tay xử lý vấn đề đấy. Thì ngay trong bài viết này chúng tôi sẽ hướng dẫn bạn cách thêm đoạn code hiển thị bài viết liên quan cực kỳ đơn giản mà hiệu quả này.
Mục lục
Code hiển thị bài viết liên quan trong WordPress
1. Lấy bài viết liên quan theo chuyên mục
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 29 30 31 32 33 34 |
<?php $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), //Bỏ qua bài viết hiện tại 'posts_per_page' =>5, // Số bài viết bạn muốn hiển thị. 'caller_get_posts'=>1, 'no_found_rows' =>true //Bỏ qua load phân trang tăng hiệu suât query ); $my_query = new wp_query($args); if( $my_query->have_posts() ) { echo '<h3>Bài viết liên quan</h3><ul class="list-news">'; while ($my_query->have_posts()) { $my_query->the_post(); ?> <li> <div class="new-img"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(array(85, 75)); ?></a></div> <div class="item-list"> <h4><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4> <?php the_excerpt(); ?> </div> </li> <?php } echo '</ul>'; } } ?> |
2. Lấy bài viết liên quan theo TAGS
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 29 30 31 |
<!-- Hiển thị bài viết theo Tag --> <div id="relatedposttags"> <?php $tags = wp_get_post_tags($post->ID); if ($tags) { $tag_ids = array(); foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id; // lấy danh sách các tag liên quan $args=array( 'tag__in' => $tag_ids, 'post__not_in' => array($post->ID), // Loại trừ bài viết hiện tại 'posts_per_page'=>5, // Số bài viết bạn muốn hiển thị. 'caller_get_posts'=>1 ); $my_query = new wp_query($args); if( $my_query->have_posts() ) { echo '<h3>Bài viết liên quan</h3><ul>'; while ($my_query->have_posts()) { $my_query->the_post(); ?> <li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li> <?php } echo '</ul>'; } } ?> </div> |
3. Lấy bài viết liên quan theo Custom Taxonomy
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 29 30 31 32 33 34 |
<!-- begin custom related loop, <a title="iz4web" href="https://iz4web.com" data-wpel-link="internal">iz4web</a> --> <?php // get the custom post type's taxonomy terms $custom_taxterms = wp_get_object_terms( $post->ID, 'your_taxonomy', array('fields' => 'ids') ); // arguments $args = array( 'post_type' => 'your_custom_post_type', 'post_status' => 'publish', 'posts_per_page' => 3, // you may edit this number 'orderby' => 'rand', 'tax_query' => array( array( 'taxonomy' => 'your_taxonomy', 'field' => 'id', 'terms' => $custom_taxterms ) ), 'post__not_in' => array ($post->ID), ); $related_items = new WP_Query( $args ); // loop over query if ($related_items->have_posts()) : echo '<ul>'; while ( $related_items->have_posts() ) : $related_items->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; echo '</ul>'; endif; // Reset Post Data wp_reset_postdata(); ?> <!-- end custom related loop, iz4web --> |
4. Sử dụng “get_previous_post() / get_next_post()” lấy bài viết liên quan :))
- get_previous_post() : Truy xuất bài đăng trước đó liền kề với bài đăng hiện tại.
- get_next_post(): Truy xuất bài đăng trước đó liền kề với bài đăng hiện tại.
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?php $prev_post = get_previous_post(); $next_post = get_next_post(); if (is_object( $prev_post)) { //Kiểm tra đối tượng $prev_post (Hiểu nôm na là trước bài viết hiện tại còn bài viết nào không) $prevID = $prev_post->ID ; }else{ $prevID = ''; } if (is_object($next_post)) { //Kiểm tra đối tượng $next_post (Hiểu nôm na là trước bài viết hiện tại còn bài viết nào không) $nextID = $next_post->ID ; }else{ $nextID = ''; } ?> <div class="container"> <?php if (!empty($prevID)) { ?> <nav class="g-detail-previous"> <div class="img"> <div class="title-px textnp"> <p class="icon-long-right"><i class="fa fa-long-arrow-left"></i></p> <a href="<?php echo get_permalink($prevID); ?>" title="<?php echo get_the_title($prevID); ?>"> PREVIOUS POST </a> </div> <div class="img-black"> <a href="<?php echo get_permalink($prevID); ?>" title="<?php echo get_the_title($prevID); ?>"> <?php echo get_the_post_thumbnail($prevID); ?></a> </div> <p class="title-desc"> <?php echo get_the_title($prevID); ?> </p> </div> </nav> <?php } ?> <?php if (!empty($nextID)) { ?> <nav class="g-detail-next"> <div class="img"> <div class="title-px textnp"> <p class="icon-long-right"><i class="fa fa-long-arrow-right"></i></p> <a href="<?php echo get_permalink($nextID); ?>" title="<?php echo get_the_title($nextID); ?>"> NEXT POST </a> </div> <div class="img-black"> <a href="<?php echo get_permalink($nextID); ?>" title="<?php echo get_the_title($nextID); ?>"> <?php echo get_the_post_thumbnail($nextID); ?></a> </div> <p class="title-desc"> <?php echo get_the_title($nextID); ?> </p> </div> </nav> <?php } ?> </div> |
Chúc bạn thành công!