Hiển thị bài viết liên quan mà không cần dùng plugin trong wordpress

24/06/2012

Nếu bạn nào không muốn dùng plugin có sẵn trên mạng thì mình xin chia sẻ đoạn code làm điều này , các bạn chỉ cần past đoạn code này vào file single.php trong folder giao diện của các bạn :

show-related-posts
Trong bài viết này mình có 2 lựa chọn dành cho bạn:
Lựa chọn thứ nhất : Hiển thị bài viết liên quan dựa trên các thẻ tag của bài viết .

<?php
//Lấy danh sách các thẻ tag từ bài viết
$tags = wp_get_post_tags($post->ID);
//Nếu tags tồn tại thì.
if ($tags) {
$tag_ids = array();
//Lấy giá trị id của tag
foreach($tags as $each_tag)
$tag_ids[] = $each_tag->term_id;

//WP_Query arguments.
$args = array(
'tag__in' => $tag_ids, //Một mảng của tag IDs sẽ được đưa vào.
'post__not_in' => array($post->ID), //Một mảng của ID bài viết sẽ được loại trừ.
'orderby'=> 'rand', //Hiển thị bài viết ngẫu nhiên
'showposts' => 10, // Số lượng bài viết mà bạn muốn hiển thị
//'caller_get_posts' => 1 // sử dụng nếu bạn sử dụng wordpress phiên bản  < 3.1 ***
'ignore_sticky_posts' => 1 //*** sử dụng cho phiên bản wordpress >= 3.1 ***
);
$query = new WP_Query($args);
//Nếu có những bài viết liên quan thì
if( $query->have_posts() ) {
echo '<div>';
echo '<h3>Related Article(s):</h3><ol>'; //*** Thay đổi tiêu đề theo ý bạn***

while ($query->have_posts()) {
$query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to: <?php the_title_attribute(); ?>">
<?php the_title(); ?></a></li>
<?php
}
echo '</ol>';
echo '</div>';
}
}
// Hủy chuỗi query trước đó
wp_reset_query();
?>

Lựa chọn thứ hai : Hiển thị bài viết liên quan dựa trên danh mục của bài viết (category).

<?php
if ($categories) {
$category_ids = array();
//retrieve the category_ids for the post.
foreach($categories as $each_category)
$category_ids&#91;&#93; = $each_category->term_id;
//WP_Query arguments.
$args = array(
'tag__in' => $tag_ids, //Một mảng của tag IDs sẽ được đưa vào.
'post__not_in' => array($post->ID), //Một mảng của ID bài viết sẽ được loại trừ.
'orderby'=> 'rand', //Hiển thị bài viết ngẫu nhiên
'showposts' => 10, // Số lượng bài viết mà bạn muốn hiển thị
//'caller_get_posts' => 1 // sử dụng nếu bạn sử dụng wordpress phiên bản  < 3.1 ***
'ignore_sticky_posts' => 1 //*** sử dụng cho phiên bản wordpress >= 3.1 ***
);
$query = new WP_Query($args);
//Nếu có những bài viết liên quan thì
if( $query->have_posts() ) {
echo '<div>';
echo '<h3>Related Article(s):</h3><ol>'; //*** Thay đổi tiêu đề theo ý bạn***
while ($query->have_posts()) {
$query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to: <?php the_title_attribute(); ?>">
<?php the_title(); ?></a></li>
<?php
}
echo '</ol>';
echo '</div>';
}
}
// Hủy chuỗi query trước đó
wp_reset_query();
?>

Sau khi bạn quyết định lựa chọn của mình, thì copy và past code tương ứng vào file single.php. File này nằm trong folder theme mà bạn đang sử dụng. Đoạn code phải được đặt bên dưới hàm the_content() như đoạn code minh họa bên dưới :

<?php get_header(); ?>
<!-- part of the single.php code removed for brevity. -->
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
<div>
<span><?php the_time('d') ?></span><br />
<span><?php the_time('M') ?></span><br />
<span><?php the_time('Y') ?></span>
</div>

<div>

<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<div>
<?php the_content('Read the rest of this entry &raquo;'); ?>
<?php /*Phần phân trang nằm ở đây. */ wp_link_pages(array('before' => '<p><span>Pages:</span> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
</div>

<!-- Đây là nơi bạn sẽ đặt đoạn code mà bạn muốn hiển thị

<!-- Kết thúc đoạn code ở đây  -->
</div>
</div>

<div>
<?php comments_template(); ?>
</div>
<?php endwhile; else: ?>
<p id="rightcolumn">Sorry, no posts matched your criteria.</p>
<?php endif; ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
?>

Nếu bạn cảm thấy việc code tay như vậy sẽ làm bạn cảm thấy mất thời gian hay khó thực hiện thì có thể tham khảo bài viết Top 5 plugin tạo tin liên quan cho trang WordPress

Chúc các bạn thành công !

Chuyên Mục:

Bài viết được đăng bởi webmaster

Nếu các bạn thấy bài viết hữu ích thì giúp mình Like cái nhé !
  • hoang

    a ơi cho e hỏi muốn hiển thị các bài viết có tag đầu tiên trong bài thì làm thế nào ạ
    vd : e post 1 bộ phim gồm 15 tập, mỗi bài e có tag đầu tiên là “phim thu thuat web” và những tag sau nữa.
    nhưng e chỉ cần hiển thị những bài có tag đầu tiên là “phim thu thuat web” mà thôi. còn những tag đứng sau k hiển thị trong những bài viết liên quan.
    vậy thì sẽ sữa code thế nào ạ. mong a giúp e chút.
    thanks nhiều 😀

    • papyrut

      Đơn giản thôi, ở lựa chọn thứ nhất, thay thế ‘tag__in’ => $tag_ids bằng ‘tag_id’=>$tag_ids[0] là được thôi bạn.