Bên dưới nội dung: Bài viết liên quan

Sau khi kết thúc nội dung ở bài viết, ngoài những thông tin khác được đưa ra thì thông tin về Bài viết liên quan cũng là một phần quan trọng cho người đọc. Được khuyến khích có kể cẩ trên các báo điện tử hiện nay.

Bài viết này sẽ hướng dẫn chúng ta cách để gọi các bài viết liên quan bên dưới mỗi bài viết.

Có nhiều cách gọi và nhiều cách lọc nội dung, ví dụ như cách ta lọc sự liên quan theo tag, theo tiêu đề, theo danh mục, tác giả hay theo nội dung .v..v.. Ngoài ra ta cũng có lựa chọn cho việc có gọi thumbnail ra hay không.

Vui lòng lưu ý rằng việc hỗ trợ thumbnail nếu chưa có trong theme cần phải được thêm vào trước khi ta có thể gọi. Ở dưới tôi gọi related-thumb với độ crop dài rộng là 50×50 pixel.


add_theme_support( 'related-thumb' );
set_post_thumbnail_size( 50, 50, true );

Tôi sẽ có hàm gọi thumbnail ra như sau:

Những hàm gọi bài viết liên quan ở đây tôi muốn chèn vào bên dưới bài viết, nghĩa là bên trên comment form trong single.php (hoặc single term loop nào bạn muốn cho post type). Dĩ nhiên bạn có thể chèn vào đâu bạn muốn trong single.php

Site-wide Related Posts

– Ta gọi các bài viết liên quan dựa trên toàn bộ nội dung trên trang

<div class="relatedposts">
<h3>Related posts</h3>
<?php
	$orig_post = $post;
	global $post;
	$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),
	'posts_per_page'=>4, // Số bài viết liên quan cần gọi.
	'caller_get_posts'=>1
	);
	
	$my_query = new wp_query( $args );

	while( $my_query->have_posts() ) {
	$my_query->the_post();
	?>
	
	<div class="relatedthumb">
		<a rel="external" href="<? the_permalink()?>"><?php the_post_thumbnail( 'related-thumb' ); ?><br />
		<?php the_title(); ?>
		</a>
	</div>
	
	<? }
	}
	$post = $orig_post;
	wp_reset_query();
	?>
</div>

Related Posts by Tags

– Ở đây tôi cần gọi những bài viết liên quan theo tag được gắn cho từng bài viết.

<?php $orig_post = $post;
global $post;
$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),
'posts_per_page'=>5, // Number of related posts that will be shown.
'caller_get_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
echo '<div id="relatedposts"><h3>Related Posts</h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post(); ?>
<li><div class="relatedthumb"><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a></div>
<div class="relatedcontent">
<h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php the_time('M j, Y') ?>
</div>
</li>
<? }
echo '</ul></div>';
}
}
$post = $orig_post;
wp_reset_query(); 
?>

Related Posts by Category

– Và ở đây thì tôi sẽ gọi các bài viết liên quan trong danh mục (category) của từng bài viết.

<?php $orig_post = $post;
global $post;
$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),
'posts_per_page'=> 2, // Number of related posts that will be shown.
'caller_get_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
echo '<div id="related_posts"><h3>Related Posts</h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post();?>
<li><div class="relatedthumb"><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a></div>
<div class="relatedcontent">
<h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php the_time('M j, Y') ?>
</div>
</li>
<?
}
echo '</ul></div>';
}
}
$post = $orig_post;
wp_reset_query(); 
?>

Bạn cần tự stying CSS cho riêng mình!

Ngoài ra các bạn cũng có thể sử dụng các plugin thay cho việc tự làm như trên, có rất nhiều plugin giúp bạn làm điều đó:
Xem tại đây: http://wordpress.org/plugins/search.php?q=Related+Posts

Filed under: Codex, Tutorials

1 Comment

  1. Bài viết rất hữu ích. Cám ơn tác giả rất nhiều


Add a Comment

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

Comment *

Name
Email *
Website