我将为您的更新提供一个小的答案,使用WP API.API可以像在core中一样使用WP\\u查询,但是关于url中的get参数。
从帖子状态提取内容的URL如下所示:
http://example.com/wp-json/posts
要使用您习惯的WP\\U查询参数提取内容,可以这样做:
http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC
您可以使用url中的所有参数构建自定义查询。您可以看到使用这种方法获取数据的感觉如何
WP_Query
对于标准WordPress循环。如果未指定参数,则默认值为
WP_Query
将使用。
结果是json,您可以为外部站点解析和使用它。
另请参见site of the API 有关更多参数和文档。
更新的date_query
API无法为以下查询创建结果
query_date
. 请参见
documentation 对于所有可能的参数。
但新版本将在几天、几周后发布。看看这个issue 有关此日期查询的解决方案的讨论。或者通过挂钩使用自定义过滤器,如:
// 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查询的此功能。但是您可以使用钩子来增强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 restful来模拟服务器上已有的Wp\\U查询帖子过滤器:
?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
元查询更新基于
this answer.