Saya akan memberi Anda jawaban kecil untuk pembaruan Anda, melakukan ini dengan WP API . API memiliki kemungkinan untuk menggunakan WP_Query seperti juga di inti, tetapi tentang parameter get di url.
URL untuk menarik konten dari Status Posting akan terlihat seperti ini:
http://example.com/wp-json/posts
Untuk menarik konten dengan parameter WP_Query yang biasa Anda gunakan, Anda bisa melakukannya seperti ini:
http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC
Anda dapat membuat kueri khusus dengan semua parameter juga di url. Anda dapat melihat bagaimana metode untuk mengambil data yang terasa biasa digunakan WP_Query
untuk loop WordPress standar. Jika Anda tidak menentukan parameter, standar untuk WP_Query
akan digunakan.
Hasilnya adalah json, yang dapat Anda parse dan gunakan untuk situs eksternal Anda.
Lihat juga situs API untuk lebih banyak parameter dan dokumentasi.
Perbarui untuk date_query
API tidak dapat membuat hasil untuk kueri seperti query_date
. Lihat dokumentasi untuk semua parameter yang mungkin.
Tetapi versi baru akan dirilis dalam beberapa hari, minggu. Dan lihat masalah ini untuk diskusi tentang solusi untuk kueri tanggal ini. Alternatif menggunakan filter khusus melalui kait, seperti:
// 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" ) ) )
);
} );
Perbarui untuk meta_query
API juga tidak bisa fitur WP-Query default ini. Tetapi Anda dapat menggunakan pengait untuk meningkatkan API ke persyaratan ini. Juga di sini contoh kecil.
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;
}
Sekarang, saya dapat memanggil JSON dengan tenang seperti itu untuk meniru filter posting Wp_query yang sudah ada di server:
?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
Pembaruan permintaan meta berdasarkan dari jawaban ini .