Chèn bài viết liên quan vào giữa nội dung bài viết đơn giản

Chào các bạn, vừa rồi mình có thấy trên group cộng đồng WordPress nhiều bác hỏi về vấn đề chèn bài viết liên quan vào giữa nội dung mà không phải sử dụng đến plugin, mình tìm trên google thì đa số hướng dẫn bằng cách sử dụng plugin.

Vì vậy trong bài mình sẽ viết 1 bài hướng dẫn mọi người viết code chèn bài viết liên quan vào giữa bài viết và đương nhiên là nó rất dễ sử dụng rồi.

Chèn bài viết liên quan vào giữa nội dung bài viết không sử dụng plugin

Bước 1: Tạo Shortcode bài viết liên quan

Sử dụng đoạn code sau viết trong file function.php của theme đang dùng.

function create_shortcode_related_posts($args, $content) {
        ob_start(); ?> 
        <?php $tags = wp_get_post_terms( get_queried_object_id(), 'category', array('fields' => 'ids') );
            $args = array (
                'post__not_in' => array ( get_queried_object_id() ),
                'posts_per_page'      => 5,
                'orderby'             => 'rand',
                'tax_query' => array (
                    array(
                        'taxonomy' => 'category',
                        'terms'    => $tags
                    ),
                ),
            );
            $tags_query = new wp_query( $args );
            if( $tags_query->have_posts() ) { ?>
            
<ul class="related-posts">
                    <?php while( $tags_query->have_posts() ) {
                        $tags_query->the_post(); ?>
                        
<li>
                            <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
                        </li>

                    <?php } wp_reset_postdata(); ?>
                    </ul>

            <?php } ?> 
        <?php $group_list = ob_get_contents();
        ob_end_clean();
        return $group_list;
}
add_shortcode('manhphuc_related_posts', 'create_shortcode_related_posts');

Giải thích:
Đoạn trên là lấy danh sách các bài viết có cùng danh mục với bài viết hiện tại để show ra ngẫu nhiên

  • posts_per_page : chính là số bài bạn muốn hiển thị, có thể sửa theo ý bạn.
  • orderby : rand là ngẫu nhiên, bạn có thể sắp xếp theo ý bạn nếu muốn

Có thể xem thêm về sắp xếp tại đây

Bước 2: Tạo 1 function xác định kết thúc số thẻ </p>

Các đoạn ký tự trong 1 bài viết sẽ ở trong từng thẻ <p></p>, lợi dụng thẻ này ta đếm số thẻ <p> trong bài và khi kết thúc thẻ <p> đó ta sẽ chèn shortcode bài viết liên quan đó vào.

function count_p( $insertion, $paragraph_id, $content ) {
        $end_p = '</h5>';
        $paragraphs = explode( $end_p, $content );
        foreach ($paragraphs as $index => $paragraph) {
                if ( trim( $paragraph ) ) {
                        $paragraphs[$index] .= $end_p;
                }
                if ( $paragraph_id == $index + 1 ) {
                        $paragraphs[$index] .= $insertion;
                }
        }
 
        return implode( '', $paragraphs );
}

Code trên cũng viết trong function.php nhá mọi người.

Bước 3: Chèn Shortcode bài viết liên quan ở trên vào khi kết thúc thẻ </p>

Code này bạn cũng để trong function.php nhé!

add_filter( 'the_content', 'add_related_post' );
 
function add_related_post( $content ) {
        $related_posts= "
<div class='meta-related'>".do_shortcode('[manhphuc_related_posts]')."</div>

";
        if ( is_single() ) {
                return count_p( $related_posts, 2, $content );
        }
        return $content;
}

Với đoạn trên trong đoạn retrurn count_p(…) thì số 2 ở đây là số thẻ P mà mọi người muốn kết thúc sẽ chèn list bài viết liên quan vào.

Làm hết 3 phần trên là đã kết thúc và hoàn thành việc chèn danh sách bài viết liên quan vào giữa bài viết rồi đó.

Lời kết

Như thế là mình đã cùng các bạn tìm hiểu cách chèn bài viết liên quan vào giữa nội dung rồi nhé! Các bạn thử thực hiện xem sao nhé. Có lỗi gì vui lòng comment hoặc liên hệ ngay để mình trợ giúp nhé!

Leave a Reply

Your email address will not be published. Required fields are marked *

arrow