Chỉ trả về Đếm từ yêu cầu wp_query?


7

Có thể với các công cụ tích hợp chuẩn trong Wordpress wp_queryđể chỉ trả về số lượng truy vấn không?

Ngay bây giờ, tôi có một truy vấn có nhiều meta_queries nhưng điều duy nhất tôi quan tâm là số lượng truy vấn thực sự.

Tôi biết rằng tôi có thể sử dụng thuộc tính Found_posts nhưng chính truy vấn sẽ tạo ra một chi phí lớn bằng truy vấn SELECT *và do đó trả về toàn bộ đối tượng.

Tôi có thể dễ dàng truy vấn DB bằng một truy vấn tùy chỉnh bằng cách sử dụng $wpdbnhưng tôi muốn sử dụng hệ thống truy vấn tích hợp nếu có thể ..

Tôi đã tìm kiếm câu trả lời cho điều này trên SE và Google nhưng lại trống rỗng.

Nếu tôi đã giải thích bản thân kém, xin vui lòng cho tôi biết và tôi sẽ cố gắng giải thích.

Chúc mừng


Có lẽ một cái gì đó giống như câu trả lời này , nơi tôi mở rộng WP_Querylớp để chỉ trả lại số lượng?
bạch dương

@birgire Tôi hoàn toàn quên mất bài viết của bạn ở đó. Tôi thậm chí đã nâng cấp nó một số giai đoạn. :-). Chắc chắn là một cách để đi đến đây
Pieter Goosen

cảm ơn, tôi đã quên mất điều này cho đến tận bây giờ ;-) @PieterGoosen
birgire

Câu trả lời:


9

Không có chức năng xây dựng để đạt được những gì bạn muốn, ít nhất là không cho các truy vấn meta phức tạp như thế này. Nếu bạn cần sử dụng hàm xây dựng cho việc này, tốt nhất sẽ là sử dụng WP_Query.

Để làm cho truy vấn nhanh hơn và bỏ qua mảng WP_Postthuộc tính được trả lại không mong muốn và vì bạn chỉ quan tâm đến số lượng bài đăng, bạn có thể sử dụng các tham số sau trong các tham số của mình trong các đối số của mình

'fields' => 'ids',
'no_found_rows' => true,

Điều này thậm chí có thể nhanh hơn một chút so với truy vấn SQL tùy chỉnh và kết quả từ WP_Querycũng được lưu trữ.


Cảm ơn .. và có lý do sẽ có lợi khi sử dụng đối số trường cho giải pháp này .. Nó tăng hiệu suất đáng kể :-)
Mestika

Niềm vui của tôi, rất vui vì tôi có thể giúp :-) Tận hưởng
Pieter Goosen 12/2/2015

0

Tôi biết điều này đã được trả lời và vì câu hỏi của bạn dựa trên việc sử dụng WP_Query, câu trả lời của tôi có thể là một cú đánh dài nhưng bạn cũng có thể thử sử dụng điều này:

wp_count_posts( $type, $perm );

where $type = post_type (post, page, 'custom-post-type-slug')and where $perm= Để bao gồm các bài đăng riêng tư mà người dùng hiện tại có thể đọc được, hãy đặt thành 'có thể đọc được'

Tôi đã sử dụng điều này trong quá khứ rất thành công :)

wp_count_posts('post')->publish -> returns only the count for published posts.

Điều này hoạt động có, nhưng nó tính tất cả các bài viết trong một loại bài đăng nhất định trong một trạng thái nhất định. Vấn đề là, điều này không hoạt động đối với các trường tùy chỉnh :-)
Pieter Goosen 16/2/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.