SO网友:Paul G.
您可以;“块”;只需将其从REST服务器中删除即可。
WP为REST API端点提供了一个过滤器,您只需使用路由对其进行过滤即可。下面是一个简单的PHP类,可以为您实现这一点。您所需要做的就是提供路由数组。我添加了一些示例。
基本上,如果任何API路由包含$my_custom_routes
数组,它们将被保留。否则,它们将被丢弃,不再可用。
将其放置在REST API启动之前加载的位置,例如functions.php
.
class Filter_Rest_Api_Endpoints {
private $my_routes;
public function __construct( $routes ) {
$this->my_routes = $routes;
add_filter( \'rest_endpoints\', array( $this, \'run_filter\' ) );
}
public function run_filter( $endpoints ) {
foreach ( $endpoints as $route => $endpoint ) {
$keep_route = false;
foreach ( $this->my_routes as $my_route ) {
if ( strpos( $route, $my_route ) !== false ) {
$keep_route = true;
break;
}
}
if ( !$keep_route ) {
unset( $endpoints[ $route ] );
}
}
return $endpoints;
}
}
function hook_my_api_routes_filter() {
$my_custom_routes = array(
\'users\',
\'/my/v1/custom/route/1\',
\'/my/v1/custom/route/2\'
);
new Filter_Rest_Api_Endpoints( $my_custom_routes );
}
add_action( \'rest_api_init\', \'hook_my_api_routes_filter\' );
当然,不建议这样做,因为您可能会破坏网站其他部分的正常功能,但如果您需要,可以在这里使用。