REST过滤器仅在设置了参数时触发

时间:2020-09-21 作者:Toby

我试图使用REST过滤器来要求设置某个参数。

使用自定义分类法和自定义帖子,我可以在请求时这样做

/wp-json/wp/v2/car?visible_to=123
那是唯一Car返回的是带有visible_to 123的分类。

然而当有人要求

/wp-json/wp/v2/car
我想抛出一个错误,这么说?需要设置visible\\u to。

我试过勾搭上rest_index, rest_pre_dispatch, 还有其他一些。只有当我?visible_to 在URL中设置,如果没有它们,钩子不会启动。

例如,我希望每个REST请求都会触发此命令

add_filter( \'rest_pre_dispatch\',\'to_limit_access\', 1, 3);

function to_limit_access($args, $request, $context) {
  return new WP_Error( \'rest_disabled\', __( \'The REST API is disabled on this site.\' ), array( \'status\' => 404 ) );
}

但它只会在上返回WP\\u错误

/wp-json/wp/v2/car?visible_to=123
两者都有

/wp-json/wp/v2/car
以及

/wp-json/wp/v2/car/6
运行时不要碰到过滤器。

有人能解释一下为什么会这样,我能做些什么来避免这种情况吗?

我也尝试过特定的过滤器,如rest_prepare_car 但我根本无法让它开火。

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

如果希望post类型的REST API端点需要一个参数,可以使用rest_{$this->post_type}_collection_params 筛选以筛选$argsGET 端点:

add_filter(
    \'rest_car_collection_params\',
    function( array $query_params ) {
        $query_params[\'visible_to\'][\'required\'] = true;
        
        return $query_params;
    }
);

SO网友:Toby

事实证明,我们启用了一个缓存插件,该插件阻碍了一些请求,而不是其他请求,导致了这种不一致性。

相关推荐

如何使用WooCommerce在React.js主题中呈现WP REST-API端点

我正在使用React构建一个电子商务Wordpress/Woocommerce主题。js。我正在使用npm软件包:create-react-wptheme此包直接在索引内部呈现react应用程序。wordpress主题的php。我不确定如何访问react中的wordpress api端点。js组件。我已经使用jsx为站点创建了模板,需要访问api端点来呈现动态内容。我可以使用对外部api的http请求访问这些点,但我需要能够访问react wp主题内的完整api。据我所知,我需要使用主干。js api客户