我有一个网站一直在使用 WordPress REST API V2 插件。我使用下面的代码添加了一个额外的参数(过滤器),我可以在调用使用自定义分类法标记的帖子时使用它topics
。该站点需要能够将多个分类术语添加到查询中,并显示具有任何指定术语的任何帖子,但仅显示具有指定这些术语之一的帖子。
add_action( 'rest_query_vars', 'custom_multiple_topics' );
function custom_multiple_topics( $vars ) {
array_push( $vars, 'tax_query' );
return $vars;
}
add_action( 'rest_post_query', 'custom_topic_query', 10, 2 );
function custom_topic_query( $args, $request ) {
if ( isset($args[ 'topics' ]) ) {
$pre_tax_query = array(
'relation' => 'OR'
);
$topics = explode( ',', $args['topics'] ); // NOTE: Assumes comma separated taxonomies
for ( $i = 0; $i < count( $topics ); $i++) {
array_push( $pre_tax_query, array(
'taxonomy' => 'topic',
'field' => 'slug',
'terms' => array( $topics[ $i ] )
));
}
$tax_query = array(
'relation' => 'AND',
$pre_tax_query
);
unset( $args[ 'topics' ] ); // We are replacing with our tax_query
$args[ 'tax_query' ] = $tax_query;
}
} // end function
一个示例 API 调用将是这样的:http://example.com/wp-json/wp/v2/posts?per_page=10&page=1&filter[topics]=audit,data
这一切都很好,直到更新到 WordPress 4.7。更新后,这些参数将被忽略。我不知道从哪里开始解决这个问题。网站上没有错误 PHP 或 Javascript,自定义过滤器被简单地忽略。更新后,所有帖子都使用此查询显示,无论它们被标记什么。
有没有人在更新时遇到这个问题?