我运营的网站是一个竞争性解谜网站,用户必须破解代码或解决密码才能解决下一个谜题。使用 woocommerce 会员资格(使用 Rest API),我注意到 mysiteexample.com/wp-json/wp/v2/pages?_fields=link&per_page=100 显示了我的会员有权访问的所有页面,这是一个问题并破坏了游戏。有没有办法在不关闭 REST API 的情况下阻止或隐藏此内容,以免用户查看,我认为这会破坏会员插件?
我在这里和reddit上尝试了多种解决方案
Hook 可以在这里找到 https://developer.wordpress.org/reference/hooks/rest_dispatch_request/
function wpse_authenticate_page_route( $dispatch_result, $request, $route, $handler ) {
if ( strpos( $route, '/wp/v2/pages' ) !== false ) {
return new \WP_Error(
'rest_auth_required',
'Authentication required',
array( 'status' => 401 )
);
}
return $dispatch_result;
}
add_filter( 'rest_dispatch_request', 'wpse_authenticate_page_route', 10, 4 );
您可能想检查一下阻止此路由不会给 Wordpress 带来问题,他们确实说阻止 API 会破坏它。 https://developer.wordpress.org/rest-api/frequently-asked-questions/#can-i-disable-the-rest-api