Tôi sẽ cung cấp cho bạn một câu trả lời nhỏ cho bản cập nhật của bạn, thực hiện điều này với API WP . API có khả năng sử dụng WP_Query giống như trong lõi, nhưng về các tham số get trong url.
Một URL để kéo nội dung từ Trạng thái bài đăng sẽ như thế này:
http://example.com/wp-json/posts
Để lấy nội dung với các tham số WP_Query mà bạn đã sử dụng, bạn có thể làm như thế này:
http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC
Bạn có thể xây dựng truy vấn tùy chỉnh của mình với tất cả các tham số trong url. Bạn có thể thấy cách thức lấy dữ liệu đó cảm thấy quen thuộc khi sử dụng WP_Query
cho một vòng lặp WordPress tiêu chuẩn. Nếu bạn không chỉ định tham số, mặc định WP_Query
sẽ được sử dụng.
Kết quả là json, mà bạn có thể phân tích và sử dụng cho trang web bên ngoài của bạn.
Xem thêm trang web của API để biết thêm thông số và tài liệu.
Cập nhật cho date_query
API không thể tạo kết quả cho truy vấn như thế nào query_date
. Xem tài liệu cho tất cả các thông số có thể.
Nhưng phiên bản mới sẽ phát hành trong vài ngày, vài tuần. Và xem vấn đề này để thảo luận về một giải pháp cho truy vấn ngày này. Thay thế sử dụng bộ lọc tùy chỉnh thông qua hook, như:
// Allow datequery in /posts filter
add_filter( "json_query_vars", function( $query_args ) {
return array_merge( $query_args,
array( "date_query" => array( array( "after" => "1 week ago" ) ) )
);
} );
Cập nhật cho meta_query
API cũng không thể là tính năng này của WP-Query mặc định. Nhưng bạn có thể sử dụng một cái móc để nâng cao API theo yêu cầu này. Cũng ở đây một ví dụ nhỏ.
add_filter('json_query_var-meta_query', 'add_meta_query', 10, 1);
function add_meta_query( $data ){
$args = array();
$args['relation'] = 'AND';
foreach ( $data as $key => $value ) {
if ( 'relation' === $key ) {
$args['relation'] = $data['relation'];
}
if ( substr($key, 0, 3) === 'key' ) {
$arg_num = substr( $key, 3 );
$args[ (int) $arg_num ][ 'key' ] = $value;
}
if ( substr( $key, 0, 7 ) === 'compare' ) {
$arg_num_comp = substr( $key, 7 );
$args[ (int) $arg_num_comp ][ 'compare' ] = $value;
}
}
return $args;
}
Bây giờ, tôi có thể gọi JSON yên tĩnh như thế để bắt chước bộ lọc bài đăng Wp_query đã có trên máy chủ:
?filter[meta_query][key]=_newsml_categories_newsstream&filter[meta_query][key2]=homepage&filter[meta_query][relation]=AND&filter[meta_query][compare]=NOT%20EXISTS&filter[meta_query][compare2]=NOT%20EXISTS
Cập nhật truy vấn meta dựa trên câu trả lời này .