【发布时间】:2017-08-03 02:53:30
【问题描述】:
我需要禁用WP REST API 的默认路由并添加自定义路由。
我找到了this question,这有助于我找到以下答案。
remove_action('rest_api_init', 'create_initial_rest_routes', 99);但是,这也会删除任何自定义内容类型路由。所以 相反,您可以选择使用:
add_filter('rest_endpoints', function($endpoints) { if ( isset( $endpoints['/wp/v2/users'] ) ) { unset( $endpoints['/wp/v2/users'] ); } // etc });
但是这样我需要知道所有默认路由并逐个删除,这不是最干净的方法。
我想知道是否有更清洁的方法来实现这一目标?
更新 1:
根据 Chris 的建议,我会在问题中添加更多细节。
目前我正在使用rest_api_init 过滤器通过使用register_rest_route 方法根据我在this article 上找到的以下代码添加我的自定义路由。
add_action( 'rest_api_init', function () {
register_rest_route( 'myplugin/v1', '/sample/', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
) );
} );
function my_awesome_func( $data ) {
return 'somthing';
}
自定义路由运行良好,但遗憾的是我无法禁用/wp/v2/posts 等默认路由。
我的问题:
如何在使用rest_api_init 过滤器注册新的自定义路由时取消设置/禁用默认路由?
【问题讨论】:
-
供将来参考:初始问题与 UPDATE 1 有所不同。初始问题上的代码将不适用于
rest_api_init过滤器。 @Chris 回答了最初的问题,然后我对其进行了一些更改,因此他将获得赏金。但是如果有人在寻找UPDATE 1的答案,请参考我自己的答案。
标签: wordpress rest routes wp-api