Lấy bài viết ngẫu nhiên trên WordPress

Bài viết này mình sẽ hướng dẫn cho các bạn cách truy vấn bài viết ngẫu nhiên trong WordPress. Để lấy được random post và đặt tại sidebar hoặc một số vị trí nào đó trên blog thì bạn có thể sử dụng truy vấn theo bài viết hướng dẫn truy vấn trong WordPress. Bài này chỉ là áp dụng trong trường hợp cụ thể hơn đó là truy vấn bài viết ngẫu nhiên, giúp người dùng có thể tìm đọc một bài viết bất kỳ trên trang của bạn.

Bài viết ngẫu nhiên cho WordPress

Nếu bạn muốn bài viết hiển thị trên sidebar thì bạn hãy mở tập tin sidebar.php của giao diện lên và thêm vào đoạn code như bên dưới:

<?php
$args = array(
	'posts_per_page' => 1,
	'orderby' => 'rand',
	'post_type' => 'post'
);
$query = new WP_Query($args);
?>
<?php if($query->have_posts()) : ?>
	<section class="widget">
	<h4 class="widget-title"><?php _e('Bài viết ngẫu nhiên', 'sb-theme'); ?></h4>
	<ul>
		<?php while($query->have_posts) : $query->the_post(); ?>
			<li>
				<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
			</li>
		<?php endwhile; wp_reset_postdata(); ?>
	</ul>
</section>
<?php endif; ?>

Câu truy vấn bên trên là nội dung cơ bản nhất để bạn thực hiện việc lấy bài viết ngẫu nhiên. Bạn có thể áp dụng để đặt vào sidebar hoặc tạo ra một trang kế thừa từ custom template nào đó, bên trong này bạn sẽ truy vấn bài viết và redirect nó sang bài viết vừa lấy được.

function sb_theme_custom_init() {
    global $wp;
    $wp->add_query_var('random');
    add_rewrite_rule('random/?$', 'index.php?random=1', 'top');
}
add_action('init', 'sb_theme_custom_init');

function sb_theme_custom_template_redirect() {
    if(get_query_var('random') == 1) {
        $args = array(
            'posts_per_page' => 1,
            'orderby' => 'rand',
            'post_type' => 'post'
        );
        $query = new WP_Query($args);
        if($query->have_posts()) {
            $random = $query->posts[0];
            wp_redirect(get_permalink($random->ID), 307);
            exit;
        }
    }
}
add_action('template_redirect', 'sb_theme_custom_template_redirect');

Trong trường hợp ví dụ bên trên, bạn sẽ tạo ra một biến truy vấn mới đó là random. Khi người dùng gõ vào trang web của bạn theo dạng địa chỉ trang web /random thì nó sẽ tự động chuyển tiếp sang bài viết ngẫu nhiên. Đối với trường hợp này thì bạn chỉ cần đặt code vào trong tập tin functions.php của giao diện, sau đó cập nhật lại tập tin .htaccess bằng cách vào Settings -> Permalinks là xong.

Bài viết ngẫu nhiên

Bạn có thể kiểm tra lại nội dung bài viết này bằng cách nhấn vào nút bên trên, bạn sẽ được chuyển tiếp đến một bài viết ngẫu nhiên trên website Học WordPress. Chúc bạn thành công.