ผมจะให้คำตอบที่มีขนาดเล็กเพื่อการปรับปรุงของคุณทำเช่นนี้กับWP API API มีความเป็นไปได้ที่จะใช้ WP_Query เหมือนในแกนกลาง แต่เกี่ยวกับพารามิเตอร์รับใน url
URL ที่จะดึงเนื้อหาจากสถานะโพสต์จะมีลักษณะดังนี้:
http://example.com/wp-json/posts
ในการดึงเนื้อหาด้วยพารามิเตอร์ WP_Query ที่คุณคุ้นเคยคุณสามารถทำสิ่งนี้ได้:
http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC
คุณสามารถสร้างแบบสอบถามที่กำหนดเองของคุณด้วยพารามิเตอร์ทั้งหมดได้ใน url คุณสามารถดูว่าวิธีการในการคว้าข้อมูลที่รู้สึกคุ้นเคยกับการใช้WP_Query
วนลูป WordPress มาตรฐานอย่างไร หากคุณไม่ได้ระบุพารามิเตอร์ระบบWP_Query
จะใช้ค่าเริ่มต้นเป็น
ผลลัพธ์คือ json ที่คุณสามารถวิเคราะห์และใช้สำหรับไซต์ภายนอกของคุณ
ดูที่ไซต์ของ APIสำหรับพารามิเตอร์และเอกสารเพิ่มเติม
อัพเดทสำหรับ date_query
API query_date
ที่ไม่สามารถสร้างผลสำหรับการค้นหาเช่น ดูเอกสารประกอบสำหรับพารามิเตอร์ที่เป็นไปได้ทั้งหมด
แต่เวอร์ชันใหม่จะวางจำหน่ายในวันที่ดูสัปดาห์ และดูปัญหานี้สำหรับการสนทนาเกี่ยวกับวิธีแก้ปัญหาสำหรับการสืบค้นวันที่นี้ ทางเลือกใช้ตัวกรองแบบกำหนดเองผ่านทาง hook เช่น:
// 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" ) ) )
);
} );
อัพเดทสำหรับ meta_query
API ไม่สามารถใช้คุณสมบัตินี้ของ WP-Query เริ่มต้นได้ แต่คุณสามารถใช้ hook เพื่อปรับปรุง API ให้เป็นไปตามข้อกำหนดนี้ นอกจากนี้ที่นี่เป็นตัวอย่างเล็ก ๆ
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;
}
ตอนนี้ฉันสามารถโทรหา JSON แบบสงบเพื่อเลียนแบบตัวกรองโพสต์ Wp_query บนเซิร์ฟเวอร์แล้ว:
?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
การปรับปรุงแบบสอบถามเมตาตามคำตอบนี้