Hiển thị các bài liên quan trong WordPress không dùng plugin

Posted on

Nếu theo dõi các bài của mình thì có thể các bạn đã làm được một số việc quan trọng rồi đúng k nào, chẳng hạn thiết kế được theme wordpress đơn giản với các tính năng đơn giản. hì… Hôm nay chúng ta sẽ làm mở rộng hơn một tí đó là hiển thị các bài viết liên quan trong WordPress

Bạn có thể sử dụng plugin để làm vấn đề này không sao cả tuy nhiên chủ đề mình là thiết kế theme nên chúng ta sẽ dùng các không xài plugin mà tự code vào.

Đầu tiên chúng ta cần xác định các bài post liên quan chỉ hiển thị ở trang chi tiết bài post hay nói cách khác đó là file single.php của chúng ta. Do chỉ hiển thị ở 1 trang duy nhất nên ta code trên đây lun khỏi viết hàm cho khổ. hì…

Hôm nay mình giới thiệu với các bạn hai cách hiển thị các bài viết liên quan trong wordpress đó là hiển thị theo từ khóa (tags) và hiển thị theo thể loại (categories).

Hiển thị bài viết liên quan theo tags

Bạn vào trong file single.php, thông thường là sẽ ở dưới cùng sau khi kết thúc nội dung bài viết chúng ta sẽ đặt các bài viết liên quan tại đây. Bạn copy đoạn code sau vào.

<!-- 
<div id="relatedpost"> 
    <?php 
        $tags = wp_get_post_tags($post->ID); 
        if ($tags) 
        { 
            $tag_ids = array(); 
            foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id; 

            $args=array( 
            'tag__in' => $tag_ids, 
            'post__not_in' => array($post->ID), 
            'showposts'=>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> 
-->

Cách này sẽ cho phép hiển thị các bài có cung tag, bạn có thể thay đổi số lượng bài hiển thị tại nơi mình chú thích.

Hiển thị bài viết liên quan theo Categories

Tương tự như trên chỉ cần thay đổi một ít là dc! Bạn đổi đoạn code trên thay bằng đoạn code dưới đây.
<!-- 
<?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), 
        'showposts'=>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="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> 
                <?php 
            } 
            echo '</ul>'; 
        } 
    } 
?> 
-->

Sau đó bạn save lại và test. Tùy rằng mới hiển thị giao điện hơi cùi nhưng không sao bạn style lại sẽ đẹp thôi. Dưới đây là bản style lại của mình cũng như kết quả bài hôm nay ta được.

Vậy là xong nha các bạn. lưu ý anh em một điều là khi bị lầm lẫn bài viết với comment không đúng với nhau có nghĩa là comment này phải là bài này mà nó hiển thị ở bài khác, bạn phải reset truy vấn khi hiển thị tin để tránh nhọc nhằn code. Chúc thành công.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s