Code hiển thị bài viết ngẫu nhiên gần đây trong WordPress

Dưới đây mình chia sẻ cho các bạn một đoạn code ngắn gọn có chức năng hiển thị bài viết ngẫu nhiên và gần đây nhất. Ngoài khả năng hiển thị bài viết ngẫu nhiên, nó còn có chức năng tạo bộ lọc để chỉ hiển thị những bài viết mới nhất mà thôi.
Ví dụ: Hiển thị 10 bài viết ngẫu nhiên trong số 60 bài viết mới nhất.

Code hiển thị bài viết ngẫu nhiên gần đây nhất

Đầu tiên các bạn cần sao chép đoạn code bộ lọc bên dưới dán vào file funcition.php trong thư mục theme mà bạn đang sử dụng.


function wpse260713_randomize_posts( $sql_query, $query ) {
$rand = (int) $query->get( '_randomize_posts_count' );
if( $rand ) {
$found_rows = '';
if( stripos( $sql_query, 'SQL_CALC_FOUND_ROWS' ) !== FALSE ) {
$found_rows = 'SQL_CALC_FOUND_ROWS';
$sql_query = str_replace( 'SQL_CALC_FOUND_ROWS ', '', $sql_query );
}
$sql_query = sprintf( 'SELECT %s wp_posts.* from ( %s ) wp_posts ORDER BY rand() LIMIT %d', $found_rows, $sql_query, $rand );
}
return $sql_query;
}
add_filter( 'posts_request', 'wpse260713_randomize_posts', 10, 2 );

Đoạn code bên dưới có chức năng hiển thị bài viết ngẫu nhiên và gây đây nhất (Bạn có thể đặt nó vào bất kỳ vị trí nào mà bạn muốn hiển thị, nhớ bổ sung thêm css vào cho lung linh nữa nhé).

<?php $owl = new WP_Query(array( 
'post_type' => 'post',
'posts_per_page' => 60,
'orderby' => 'date',
'order' => 'DESC',
'meta_key' => '_thumbnail_id',
'no_found_rows' => 'true',
'_randomize_posts_count' => 10
));
?>
<?php $i = 0; while ($owl->have_posts()) : $owl->the_post(); ?>
<div class="ganday">
<div>
<a href="<?php the_permalink(); ?>"><img class="image" src="<?php echo get_the_post_thumbnail_url (); ?>" /></a>
<div style="padding:10px;">
<div class="tieude"><h2 style="line-height:0.5"><a href="<?php the_permalink();?>"><?php echo wp_trim_words( get_the_title() , 14 ) ?></a></h2></div>
<div class="tacgia"><a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); ?>"><?php the_author(); ?></a></div>
<div class="noidungngan"><?php echo wp_trim_words( get_the_excerpt() , 10 ) ?></div>
</div>
</div>
</div>
<?php $i++; endwhile ; wp_reset_query() ;?>

Với đoạn code ở trên, sẽ hiển thị ra 10 bài viết ngẫu nhiên trong tổng số 60 bài viết mới nhất.
‘posts_per_page’ => 60 số lượng bài viết được lọc ra để hiển thị.
‘_randomize_posts_count’ => 10 số bài viết ngẫu nhiên sẽ được hiển thị ra trong số bài viết được lọc ra ở trên.

Đánh giá bài viết bạn ơi!