Home / Thủ Thuật / Wordpress / Hiển thị bài viết liên quan mà không cần dùng plugin trong wordpress

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

Trong bài viết này mình có 2 lựa chọn dành cho bạn:

Cách 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();
?>

Cách 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[] = $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(); ?>
?>

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

About TapChi CNTT

Leave a Reply

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

*

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.