gpt4 book ai didi

javascript - 更新到 WP 4.7 后,WordPress API V2 的额外参数和查询被忽略

转载 作者:行者123 更新时间:2023-12-03 05:11:16 25 4
gpt4 key购买 nike

我有一个网站一直在使用 WordPress REST API V2 插件。我使用下面的代码添加了一个额外的参数(过滤器),在调用使用自定义分类主题标记的帖子时可以使用该参数。该网站需要能够将多个分类术语添加到查询中,并显示具有指定的任何这些术语的所有帖子,但仅显示指定了这些术语之一的帖子。

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 错误,自定义过滤器被简单地忽略。更新后,所有帖子都将使用此查询显示,无论它们带有什么标签。

有人在更新时遇到过这个问题吗?

最佳答案

我找到了这个问题的解决方案。事实证明,更新后不再使用 rest_query_vars 操作。

解决方案很简单。我必须更新在 rest_post_query 操作上触发的代码,以测试 $request 而不是 $args

这是我的解决方案,它替换了问题中的所有代码:

add_action( 'rest_post_query', 'custom_topic_query', 10, 2 );
function custom_topic_query( $args, $request ) {

if ( isset($request['filter']['topics']) ) {
$pre_tax_query = array(
'relation' => 'OR'
);

$topics = explode( ',', $request['filter']['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
);

$args[ 'tax_query' ] = $tax_query;
}

} // end function

请注意,我将每个 $args[ 'topics' ] 替换为 $request['filter']['topics']

关于javascript - 更新到 WP 4.7 后,WordPress API V2 的额外参数和查询被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41810717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com