wordpress屏蔽wp-json(禁用REST API)的方法

 2024年9月30日 09:42:48     42  

文章目录

在wordpress网站日志文件中发现蜘蛛爬行了很多次的/wp-json/目录,在robots文件中disallow掉了爬虫还是访问了那个目录,能不能直接在程序中直接改呢?通过查询相关文档发现WordPress 4.4版本以后增加了一个REST API功能, 通过REST API可以很轻松的获取网站的数据,但是这个功能并不是每个网站都需要的,或者说有需要但并不希望它在head里面输出,那么可以禁用REST API或者说移除head里面wp-json链接。

移除方法

打开主题的 functions.php 文件,加入以下代码即可。但这样做实质上并不会禁用 oembed,如需完全禁用请使用 WordPress 官方开发了一个插件:Disable Embeds。

// 屏蔽 REST API
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');
 
// 移除头部 wp-json 标签和 HTTP header 中的 link 
remove_action('wp_head', 'rest_output_link_wp_head', 10 );
remove_action('template_redirect', 'rest_output_link_header', 11 );

注意:屏蔽 REST API 会直接导致 文章 Emebed 功能失效。

由于wordpress新版编辑器的后台会使用wp-json,因此只需要让未登陆的禁止使用即可。上边的方法是都直接禁止了,前后台都禁止了,无法使用新版编辑器。用下面的代码,在主题里面的functions.php里面增加:

add_filter('rest_authentication_errors', function () {
            if (!is_user_logged_in()) {
                return new \WP_Error(403, 'not allowed');
            }
        });

什么是wp-json

WordPress 4.4 版本以后增加了一个 REST API 功能,这是个非常棒功能,通过 REST API 生成的 JSON 接口,可以很轻松的获取网站的数据,可应用于其它网站、手机 APP 或小程序等。但是这个功能并不是每个网站都需要的,如果博客没有任何客户端,那么可以移除 WordPress 的 REST API 功能。

WP REST API 是 WordPress 的一个功能,为其提供对外标准的 RESTFul 接口,随着 RESTFul 的畅行和各种前端框架的出现,WP REST API可以让 WordPress 不仅仅存在 Web 端,可以让 WordPress 不仅仅履行一个博客功能,而是可以让它作为后台终端(BackEnd),然后以各种应用的形式实现在各种各样的设备中。

什么是oembed

有没有想过,只需要在日志中输入一个视频网站或者图片分享的 URL,这个 URL 里面含有的视频或者图片就自动显示出来?这样是不是很酷?这个就是 WordPress 的 Embeds 的功能,直接发布一个 URL(需要单独一行,纯文本,不带链接才行),就能把这个 URL 中的视频显示到博客上,并且会根据博客的布局调整视频的大小。

版权声明:鹿泽 发表于 2周前,共 1319 字。
转载请注明:wordpress屏蔽wp-json(禁用REST API)的方法 | 鹿泽笔记

您可能感兴趣的