Mẹo nhỏ để tối ưu wp_query WordPress

Nếu bạn là bạn sẽ sử dụng truy vấn WP_Query rất nhiều, dưới đây là 1 mẹo nhỏ để bạn tối ưu được WP_Query

Ví dụ: Bạn muốn show 6 bài đăng mới nhất và hiển thị chúng trên một trang thì sẽ sử dụng query đơn giản như sau:

<?php
 $args = array(
  'post_type'      => 'post',
  'post_status' => 'publish',
  'order'          => 'DESC',
  'orderby'        => 'date',
  'posts_per_page' => '6'
  );
  $parent = new WP_Query( $args );
  ?>

Truy vấn bên trên đúng và code vẫn làm việc bình thường, tuy nhiên nó thực sự chạy các truy vấn cơ sở dữ liệu bổ sung để lấy kết quả, như vậy sẽ không tối ưu, mà thay vào đó bạn có thể sử dụng đoạn code phía dưới đây để .

<?php
 $args = array(
  'post_type'      => 'post',
  'post_status' => 'publish',
  'order'          => 'DESC',
  'orderby'        => 'date',
  'posts_per_page'      => '6',
  'update_post_meta_cache' => false, // to do not run query for post meta
  'update_post_term_cache' => false,  // to do not run query for terms, remove if terms required
  'ignore_sticky_posts' => true,  // to ignore sticky posts  
  'no_found_rows' => true  // to do not count posts – remove if pagination required
  );
  $parent = new WP_Query( $args );
  ?>

Nếu tham số update_post_meta_cache của WP_Query không được đặt thành false, thì sau khi các bài viết được truy xuất từ ​​DB, thì hàm update_post_caches sẽ được gọi, hàm này sẽ gọi hàm update_postmeta_cache.

Hàm update_postmeta_cache là một trình bao bọc cho update_meta_cache và về cơ bản nó gọi một SELECT đơn giản với tất cả ID của các bài đăng được truy xuất. Điều này sẽ giúp nó nhận được tất cả postmeta, cho tất cả các bài đăng trong truy vấn và lưu dữ liệu đó trong bộ đệm ẩn đối tượng (sử dụng wp_cache_add).

Khi bạn làm điều gì đó như get_post_custom(), trước tiên nó sẽ kiểm tra bộ nhớ cache của đối tượng đó. Vì vậy, không phải truy vấn thêm để có được meta bài đăng vào thời điểm này. Nếu bạn đã nhận được bài đăng trong WP_Query, thì meta đã có trong bộ nhớ và nó sẽ lấy ngay từ đó.

Sau khi sử dụng đoạn code wp_query tối ưu kia bạn có check bằng Query Monitor hoặc tại 1 custom template để test với Google pagespeed sẽ thấy sự hiệu nghiệm.

Chúc bạn thành công.

Tiến Dũng Đào là chuyên gia quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress với hơn 5 năm phát triển theme và plugin.Sở thích của anh là đọc, viết blog, đi du lịch, tập võ và chia sẻ các kiến thức cho mọi người.

Bài viết liên quan