WordPress Nâng Cao

Sử dụng wp query và loop để lấy bài viết

Sử dụng Loop và Query để lấy bài viết như thế nào, bạn có từng thắc mắc về điều đó. Hôm nay chúng ta sẽ cùng tìm hiểu về Query và Loop là gì ?

WordPress Query và Loop là hai khái niệm rất quan trọng khi làm theme vì nó sẽ giúp bạn hiển thị danh sách bài viết theo ý của mình. Bài viết hôm nay chúng tôi sẽ giới thiệu cho các bạn cách sử dụng WP_Query, get_posts, query_posts.

Có thể là nhiều bạn chưa biết khái niệm Query và Loop như thế nào thì mình sẽ giải thích sơ lược về nó trước khi đi vào phần tìm hiểu cách sử dụng nhé

Loop là gì?

Ai học qua lập trình thì đều hiểu rằng Loop là một hành động được lặp đi lặp lại thông qua một số hàm như whileforforeach,…Và ở trong WordPress cũng thế thôi, Loop trong WordPress là một đoạn code được đặt trong một hàm while (đa phần là vậy) các query bên trong biến toàn cục $wp_query để lấy giá trị của một post trong post type nào đó.

Những đoạn code đặt bên trong một Loop thì người ta gọi là Template Tags, các hàm này có ý nghĩa hiển thị những thành phần cụ thể như:

–  the_title() : hiển thị tiêu đề của post.

–  the_content() : hiển thị nội dung của post.

–  the_excerpt() : hiển thị nội dung excerpt của post, nếu không có excerpt thì nó sẽ tự động cắt một phần nội dung.

Tạo mới query với WP_Query

Đã nói tới Loop thì không bao giờ thiếu query vì hai cái này là vợ chồng với nhau nên đi đâu chúng ta phải lôi tụi nó đi theo chứ không tụi nó nhớ nhau mà không làm việc được =)))

Vậy thì bây giờ nếu chúng ta muốn tuỳ biến bài viết hiển thị ra thì phải tùy biến cái Query trước. Ví dụ như chỉnh sửa số lượng bài viết được lặp, lấy bài từ một term nào đó,…. Và để tuỳ biến, chúng ta sẽ sử dụng class WP_Query để tạo ra một Query mới với các tham số như ý của mình.

Nếu đã hiểu sơ về Loop và Query rồi thì chúng ta sẽ tiếp tục tìm hiểu về cách sử dụng của nó nhé.

Sử dụng Loop trong WordPress để lấy bài viết

<?php

         if ( have_posts() ) :

        while ( have_posts() ) : the_post();

        // Nội dung vòng lặp ở đây

        endwhile;

        endif;

  ?>

–   Trong cấu trúc trên thì đoạn mã sẽ bắt đầu với while duyệt tất cả các bài viết có trong cơ sở dữ liệu (Database).

–   Hàm have _ posts () dùng để kiểm tra xem danh sách các bài đăng đang được xử lý đã hết chưa hoặc không có mục nào để bắt đầu.

–   Tiếp theo, the_ post () được gọi để tải tất cả dữ liệu bài đăng. Hàm này phải được gọi bên trong vòng lặp của bạn để dữ liệu bài đăng được đặt chính xác.

Các hàm được sử dụng ở bên trong vòng lặp đó là:

–   the_permalink (): Hiển thị URL của bài đăng của bạn.

–   the_title (): Hiển thị tiêu đề của bài đăng.

–   the_ID (): Hiển thị ID duy nhất của bài đăng của bạn.

–   the_content (): Hiển thị toàn bộ nội dung bài đăng của bạn.

–   the_excerpt (): Hiển thị phần trích dẫn của bài đăng của bạn. Nếu trường Trích dẫn được điền trên màn hình Chỉnh sửa bài đăng, trường đó sẽ được sử dụng. Nếu không, WordPress sẽ tự động tạo một đoạn trích ngắn từ nội dung bài đăng của bạn.

–    the_time (): Hiển thị ngày / giờ bài đăng của bạn được xuất bản.

–    the_author (): Hiển thị tác giả của bài đăng.

–   the_tags (): Hiển thị các thẻ được gắn vào bài viết.

–   the_category (): Hiển thị các danh mục được chỉ định cho bài đăng.

–    edit_post_link (): Hiển thị liên kết chỉnh sửa chỉ được hiển thị nếu bạn đã đăng nhập và được phép chỉnh sửa bài đăng.

–    comment_form (): Hiển thị một biểu mẫu nhận xét hoàn chỉnh cho bài đăng của bạn.

Ví dụ:

<?php

     if ( have_posts() ) :

     while ( have_posts() ) : the_post();

  ?>

     <a href=“<?php the_permalink(); ?>”><?php the_title(); ?></a> <br />

<?php

    the_content();

    endwhile;

    endif;

   ?>

Sử dụng đối tượng WP_Query

WP_Query là một lớp được định nghĩa trong WordPress giúp bạn dễ dàng tạo các vòng lặp tùy chỉnh của riêng mình. Cả query _ posts() và get _ posts() đều sử dụng lớp W _Query để truy xuất nội dung WordPress.

Khi bạn đang sử dụng query _ posts (), truy vấn $wp _ biến toàn cục được sử dụng như một phiên bản của WP _ Query, làm cho truy vấn $ wp _ trở thành kho lưu trữ dữ liệu mặc định cho một số hoạt động. Vòng lặp tùy chỉnh có thể được sử dụng ở bất kỳ đâu trong tệp mẫu chủ đề của bạn để hiển thị các loại nội dung khác nhau; chúng phải xây dựng trên các phiên bản riêng biệt của biến Truy vấn WP _.

Ví dụ:

<?php

    $listPosts = new WP_Query( ‘posts_per_page=5’ );

    while ( $listPosts– >have_posts() ): $listPosts->the_post();

  ?>

     <!–– Nội dung ––>

<?php endwhile;   ?>

Tham số bài đăng:

–   post_type = post: Tải các bài đăng dựa trên post type. Nếu bạn chỉ muốn xem các trang chứ không phải bài viết, sử dụng post_type = page.

–   posts_per_page = 5 : Số lượng bài viết cần tải trên mỗi trang. Đây là mặc định. Để hiển thị tất cả các bài đăng, hãy đặt tham số này thành –1.

–   offset = 1 : Số lượng bài viết cần bỏ qua trước khi tải

Ví dụ đặt đoạn mã này vào trong file index.php

<?php

    $args = array( ‘post_type’ => ‘post’,

    ‘posts_per_page’ => 6

    ‘category_name’ => ‘wordpress’

    ‘order’ => ‘desc’

    ‘orderby’ => ‘ID’// Sắp xếp bài viết theo thứ tự ID ); 

    $query_posts = new WP_Query( $args ); 

    if( $query_posts->have_posts() ): 

    while( $query_posts->have_posts() ) : 

    $query_posts->the_post(); 

    echo the_title();

    endwhile

    endif

   wp_reset_query(); 

?>

Với ví dụ trên bạn sẽ hiển thị được danh sách bài viết theo chuyên mục thủ thuật WordPress. Kể từ bây giờ khi dùng để lấy danh sách bài viết bạn có thể sử dụng ví dụ ở trên để áp dụng.

Kết luận: Loop và WP_Query là những kiến thức không thể thiếu khi tìm hiểu về WordPress. Hi vọng qua bài này bạn đã phần nào hiểu được cách dùng để có thể tùy chỉnh giao diện theo ý của mình rồi.

Để lại bình luận

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