У меня есть веб-сайт, на котором используется плагин 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 на сайте нет, пользовательский фильтр просто игнорируется. После обновления все сообщения отображаются по этому запросу независимо от того, чем они помечены.
Кто-нибудь сталкивался с этой проблемой при обновлении?