Khôi Phục Mật Khẩu

Vui lòng liên hệ với Quản trị viên để được hỗ trợ reset lại mật khẩu tài khoản của bạn.

Zalo Admin
0358949680
Nhắn Zalo
Hoặc
Quên mật khẩu ?
Tạo tài khoản để truy cập đầy đủ tính năng!
Hoặc
Trang chủ / Blog / Hướng dẫn lấy bài viết trong wordpress (Vòng lặp get post và Wp_query)
Huy Kira
Huy Kira · Theo dõi

Hướng dẫn lấy bài viết trong wordpress (Vòng lặp get post và Wp_query)

Lấy bài viết trong wordpress – Tiếp tục với loạt bài hướng dẫn lập trình wordpress, hôm nay mình sẽ hướng dẫn cho các bạn cách lấy bài viết trong wordpress sử dụng vòng lặp (loop) và wp_query. Bài này khá quan trọng chúng ta sẽ sử dụng xuyên suốt trong quá trình lập trình wordpress

Cú pháp để lấy bài viết trong wordpress:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
   // Các thành phần của bài viết
<?php endwhile;?>
<?php endif; ?>

Giải thích:

Đoạn code trên có chức năng kiểm tra có post (bài viết) hay không (have_post()), nếu có post sẽ dùng vòng lặp while để hiện thị các thành phần của post.

Ví dụ:

Trong post mình có 2 bài viết như sau

Lấy bài viết trong wordpress

Để lấy 2 bài viết này hiển thị ở trang chủ ta sử dụng đoạn code như sau đặt vào file index.php

Lấy bài viết trong wordpress

Kết quả hiện thị ở trang chủ sẽ là:

Lấy bài viết trong wordpress

 

Tương tự như thế chúng ta có thể sử dùng vòng lặp này để lấy các thành phần khác của bài viết như: Lấy ngày post, lấy nội dung, lấy phần mô tả, lấy chuyên mục, lấy tác giả…

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
	<h2>
		<a href="<?php the_permalink(); // lấy link của bài viết ?>">
			<?php the_title(); // lấy tiêu đề ?>
		</a>
	</h2>
	<div class="meta"><?php echo get_the_date('d - m -Y'); // lấy ngày post bài ?></div>
	<?php the_content(); // lấy toàn bộ nội dung bài post ?>
	<?php the_excerpt(); // Lấy mô tả ngắn của bài post ?>
	<?php the_category(); // lấy category của bài post này ?>
<?php endwhile; ?>
<?php endif; ?>

Đối với các file tương ứng thì lấy bài viết trong wordpress sẽ như sau:

  • Vòng lặp này đặt ở file index.php nó sẽ lấy tất cả bài viết có trong post (Số lượng phụ thuộc vào sự điều chỉnh của chúng ta trong phần cài đặt).
  • Nếu đặt trong file category.php nó sẽ lấy tất cả bài viết có trong chuyên mục tương ứng khi chúng ta vào chuyên mục đó.
  • Đặt trong file single.php nó sẽ lấy 1 bài viết khi chúng ta truy cập đến bài viết tương ứng.
  • Đặt trong author.php nó sẽ lấy tất cả các bài viết mà tác giả đó viết khi chúng ta truy cập đến tác giả tương ứng

Sử dụng new Wp_query

Đọc đến đây chắc nhiều bạn thắc mắc như mình muốn lấy bài viết theo chuyên mục thì làm như thế nào? Hoặc mình muốn lấy bài viết mới nhất đặt ở sidebar thì như thế nào? Mình muốn hiển thị chỉ 1 bài viết thì như thế nào?… Để giải quyết các vấn đề đó thì mình xin giới thiệu New Wp_query. 

Đây cũng là 1 vòng lặp get post nhưng chúng ta có thể thêm những điều kiện để lấy được những nội dung mong muốn.

Cú pháp sử dụng:

<?php 
	$args = array(
		'post_status' => 'publish', // Chỉ lấy những bài viết được publish
		'post_type' => 'post', // Lấy những bài viết thuộc post, nếu lấy những bài trong 'trang' thì để là page 
		'showposts' => 12, // số lượng bài viết
		'cat' => 1, // lấy bài viết trong chuyên mục có id là 1
	);
?>
<?php $getposts = new WP_query($args); ?>
<?php global $wp_query; $wp_query->in_the_loop = true; ?>
<?php while ($getposts->have_posts()) : $getposts->the_post(); ?>
	<?php //các thành phần cần lấy  ?>
<?php endwhile; wp_reset_postdata(); ?>

Giải thích:

Tương tự như vòng lặp get post thường nó sẽ kiểm tra nếu có post thoải mãn những điều kiện trên thì nó sẽ chạy vòng lặp while để lấy các thành phần.

Đây là các điều điện được thêm vào để lấy bài viết mong muốn.

$args = array(
		'post_status' => 'publish', // Chỉ lấy những bài viết được publish
		'post_type' => 'post', // Lấy những bài viết thuộc post, nếu lấy những bài trong 'trang' thì để là page 
		'showposts' => 12, // số lượng bài viết
		'cat' => 1, // lấy bài viết trong chuyên mục có id là 1
	);

Ngoài ra nó có rất nhiều điều kiện khác để lấy bài viết trong wordpress các bạn có thể tham khảo tại đây

Ví dụ:

Ví dụ 1:   lấy 10 bài viết mới nhất:

<?php 
	$args = array(
		'post_status' => 'publish', // Chỉ lấy những bài viết được publish
		'showposts' => 10, // số lượng bài viết
	);
?>
<?php $getposts = new WP_query($args); ?>
<?php global $wp_query; $wp_query->in_the_loop = true; ?>
<?php while ($getposts->have_posts()) : $getposts->the_post(); ?>
	<?php //các thành phần cần lấy  ?>
<?php endwhile; wp_reset_postdata(); ?>

Ví dụ 2: Lấy 5 bài viết trong chuyên mục Học tập (giả sử chuyên mục học tập có id là 1).

<?php 
	$args = array(
		'post_status' => 'publish', // Chỉ lấy những bài viết được publish
		'showposts' => 5, // số lượng bài viết
                'cat' => 1, // cat_id
	);
?>
<?php $getposts = new WP_query($args); ?>
<?php global $wp_query; $wp_query->in_the_loop = true; ?>
<?php while ($getposts->have_posts()) : $getposts->the_post(); ?>
	<?php //các thành phần cần lấy  ?>
<?php endwhile; wp_reset_postdata(); ?>

Ví dụ 3: lấy tất cả bài viết trong trong phần trang (post_type page).

<?php 
	$args = array(
		'post_status' => 'publish', // Chỉ lấy những bài viết được publish
		'post_type' => 'page', // số lượng bài viết
	);
?>
<?php $getposts = new WP_query($args); ?>
<?php global $wp_query; $wp_query->in_the_loop = true; ?>
<?php while ($getposts->have_posts()) : $getposts->the_post(); ?>
	<?php //các thành phần cần lấy  ?>
<?php endwhile; wp_reset_postdata(); ?>

Ví dụ 4: lấy nội dung của bài viết giới thiệu trong post_type page (Giả sử bài viết giới thiệu có id là 2)

<?php 
	$args = array(
		'post_status' => 'publish', // Chỉ lấy những bài viết được publish
		'post_type' => 'page', // số lượng bài viết
                'p' => 2,
	);
?>
<?php $getposts = new WP_query($args); ?>
<?php global $wp_query; $wp_query->in_the_loop = true; ?>
<?php while ($getposts->have_posts()) : $getposts->the_post(); ?>
	<?php //các thành phần cần lấy  ?>
<?php endwhile; wp_reset_postdata(); ?>

Tổng kết:

Trên đây mình xin giới thiệu cho các bạn cách thức lấy bài viết trong wordpress sử dung các vòng lặp get post. Còn nhiều cách khác để lấy bài viết, hay hiển thị bài viết các bạn có thể tham khảo những nguồn tài liệu trên internet.

Bài này mình chỉ cách lấy bài viết 1 cách nhanh nhất nếu các bạn muốn hiểu trỏ quy trình hoạt động của các vòng lặp trên thì có thể tham khảo video dưới đây:

Có gì thắc mắc các bạn có thể CMT phía dưới. Chào thân ái và quyết thắng!

Nhan 9 năm trước

<?php the_excerpt(); // Lấy mô tả ngắn của bài post ?> a ơi cho em hỏi phần này mình muốn lấy mô tả của bài viết nhưng giới hạn số ký tự lại thì làm sao anh?

HuyKira 9 năm trước

<code> function teaser($limit) { $excerpt = explode(' ', get_the_excerpt(), $limit); if (count($excerpt)>=$limit) { array_pop($excerpt); $excerpt = implode(" ",$excerpt).'[...]'; } else { $excerpt = implode(" ",$excerpt); } $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt); return $excerpt.'...'; } </code> Dán đoạn code này file function.php Cách sử dụng: < ?php echo teaser(30); ?> // 30 là số từ cần lấy!

havantuan189@gmail.com 8 năm trước

Bạn ơi mình lấy 10 bài viết trong category của page tin tức có cat=1 chẳng hạn. Thì phân trang như thế nào nhỉ.

PHUC 7 năm trước

Em muốn lấy 3 bài viết trong mục chuyên mục học tập, nhưng nó chỉ lấy đúng 1 bài viết , tức là 3 bài nhưng chỉ 1 link bài viết mới nhất. ko làm thế nào thế nó lấy 3 link khác nhau

Huy Kira 7 năm trước

Em gởi đoạn code em đang làm cho anh xem thử?

Dương Phúc Nghĩa 7 năm trước

Anh ơi! Em muốn lấy danh sách bài viết được đính (sticky) thì $args cần những key và value nào ạ

Huy Kira 7 năm trước

Em xem bài viết này nha! <strong><a taget="_blank" href="https://www.wpbeginner.com/wp-tutorials/how-to-display-the-latest-sticky-posts-in-wordpress/" rel="nofollow">LINK</a></strong>

Kaga Akatsuku 7 năm trước

Tks anh <3

Quốc Bình 7 năm trước

hay quá Anh ơi ! cảm ơn Anh nhiều ạ <3

Nga 7 năm trước

Nhờ bạn chỉ cách lấy bài viết từ 1 database khác (trên cùng host) hiển thị lên trang chủ của WordPress với ah.

An Phat 7 năm trước

Nếu mình muốn nó lấy bài viết theo thời gian chỉ định thì mình thêm code như thế nào bác?

thinh 7 năm trước

Bạn ơi, hướng dẫn mình đặt avatar trong phần comment giống thế này dc ko bạn?

tramymedia 6 năm trước

Nếu muốn hiển thị bài viết ở 1 trang wordpress về trang của mình thì sao bạn,

Nam 6 năm trước

bạn cho mình hỏi. Mình đã hết hạn tên miền, chỉ còn code web giờ cho mình hỏi bài viết sẽ được lưu trong thư mục nào? Mình cám ơn!

Thái Dương Limousine 6 năm trước

the_post(); <div class="row item"> </div> Em muốn làm cái slider chạy cho cái thẻ dic thì làm sao anh nhỉ ? ,em get ra vài bài viết em cho hiển thị từng bài thành slider cho bài viết nó chạy qua lại .

Trung Dương 6 năm trước

Trong vi du 4 id bài viết là 1 biến động phát sinh ra khi click chọn trên 1 danh sách các bài viết mới nhất ở cột ở giữa thì làm sao lấy được nội dung bài viết đó ra ở cột bên phải? (thiết kế homepage gồm 3 cột, cột trái là danh sách các bài viết mới nhất, cột phải là 1 sidebar quảng cáo, yêu cầu khi click chọn 1 bài viết bất kỳ trong danh sách bài viết trên cột trái thì nội dung bài đó sẽ hiển thị ở cột giữa)

Bùi Đức Hiệp 6 năm trước

Mình muốn lấy danh sách (Kiểu dạng url của bài viết) mà được phân chia theo Categories thì làm như thế nào được nhỉ

Triệu 5 năm trước

Có Plugin nào đơn giản hơn ko b

Phúc Lộc 4 năm trước

anh ơi, e muốn hiện bài viết mới mà kiểu 2 bài đầu thì có hình thumbnail, 4 bài tiếp thì không hiện hình thì như nào vậy anh. em cảm ơn

Sonnn 3 năm trước

Còn đồng k anh cứu em

Sonnn 3 năm trước

Anh cứu em đx k