Güncellemeniz için size WP API ile küçük bir cevap vereceğim . API, WP_Query'yi çekirdekte olduğu gibi kullanmak için olanaklara sahiptir, ancak url'deki get parametreleri hakkında.
Posta Durumu'ndan içerik çekmek için bir URL şöyle görünecektir:
http://example.com/wp-json/posts
Alıştığınız WP_Query parametreleriyle içerik çekmek için şu şekilde yapabilirsiniz:
http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC
Özel sorgunuzu URL'de de tüm parametrelerle oluşturabilirsiniz. Verileri yakalama yönteminin WP_Query
standart bir WordPress döngüsü için nasıl tanıdık geldiğini görebilirsiniz . Bir parametre belirtmezseniz, varsayılan değerler WP_Query
kullanılır.
Sonuç, harici siteyi ayrıştırabileceğiniz ve kullanabileceğiniz json'dur.
Daha fazla parametre ve dokümantasyon için API'nın sitesine de bakın .
İçin güncelleme date_query
API, gibi bir sorgu için sonuç oluşturamaz query_date
. Olası tüm parametreler için belgelere bakın .
Ancak yeni sürüm görünüm günleri, haftalar içinde yayınlanacak. Ve bu tarih sorgusuna yönelik bir çözüm hakkında tartışma için bu konuya bakın . Alternatif olarak, kanca ile özel bir filtre kullanın, örneğin:
// 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" ) ) )
);
} );
İçin güncelleme meta_query
API, varsayılan WP Sorgusunun bu özelliğini de kullanamaz. Ancak API'yı bu gereksinime göre geliştirmek için bir kanca kullanabilirsiniz. Ayrıca burada küçük bir örnek.
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;
}
Şimdi, zaten sunucuda Wp_query mesajlar filtresini taklit etmek için JSON böyle huzurlu çağırabilirsiniz:
?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
Bu soruyu temel alan meta sorgu güncellemesi .