禁用 WordPress Rest API 默认路由后有利于 WordPress 站点安全及避免暴露网站所有内容,所有老黑的所有 WordPress 网站都是直接禁用了 WordPress 默认路由的,但是由于 WordPress 默认使用块编辑器(古腾堡 Gutenberg),所有如果直接使用代码禁用 WordPress Rest API 默认路由就会导致后台编辑器无法正常使用。
故此老黑就来分享一个兼容 WordPress 编辑器的情况下,对外也能够禁用 WordPress rest api,具体代码如下:
add_action('plugins_loaded',function(){//兼容 古腾堡编辑器 global $post; if( !is_user_logged_in() || current_user_can('edit_posts') ) remove_filter( 'rest_api_init', 'create_initial_rest_routes', 99 );//复制此行到当前主题 functions.php 文件中可以直接禁用 WordPress 默认路由 });
如果你已经使用类似或者有其它方法禁用了 WordPress 默认路由,建议删除后在使用老黑以上提供的代码,如果从未使用过类似的功能或插件,可以复制以上代码到你当前所用主题的 functions.php 文件中即可。
需要说明的是,以上代码中的主要实现原理就是判断用户是否登录以及是都有编辑权限,只有当用户登录,且拥有文章编辑权限的用户才不会禁用默认路由,以达到兼容古腾堡编辑器的目的,当然如果你像老黑一样只用 WordPress 经典编辑器,那么建议直接禁用 WordPress 默认路由即可。