WPJAM Basic 去掉了「屏蔽 REST API」功能

这是一个非常纠结的过程,你听我娓娓道来,开发不是一个想当然的事情,一个小小的功能都有演化的过程,还有程序员的心酸。

WPJAM Basic 的 REST API

WordPress 是在 4.4 版本推出 REST API 功能,不过我在更早之前就在 WPJAM Basic 就做了 REST API 接口的功能,直到现在我还在使用 WPJAM Basic 的 REST API 功能,比如果酱小程序就是使用 WPJAM Basic 的 REST API。

继续使用并不是 WPJAM Basic 的 REST API 功能写得更好好,是因为用熟悉了,而且很多地方一直在用,就一直沿用下来了,当然有一点我觉得 WPJAM Basic 的 REST API Rewrite 之后 URL 更好看的,比如果酱小程序的文章列表接口:

代码语言:javascript
复制
https://博客域名/api/post/list.json

屏蔽 WordPress 的 REST API

因为有 WPJAM Basic 自带的 REST API,那就在 WPJAM Basic 的「优化设置」中添加了屏蔽 REST API 功能,觉得自己不用,就增加个选项可以勾选去掉。

随着 WordPress 版本的推进,功能的叠加,功能也产生了依赖,WordPress REST API 成为很多功能的基础,比如古腾堡编辑器就是基于 REST API 的,所以很多人在 WPJAM Basic 的「优化设置」把 REST API 功能屏蔽了,然后发现古腾堡没法用了,就来怼我:装了 WPJAM Basic,古腾堡都不能用了。

所以很无语,虽然在「优化设置」已经做了处理,勾选了「屏蔽古腾堡」才能勾选「屏蔽 REST API」,但是不知道什么原因,可能其他插件或者主题把古腾堡编辑器屏蔽了,然后所有的罪都由 WPJAM Basic 来背。😭

去掉屏蔽 REST API 功能

所以为了避免成为池鱼,我决定 WPJAM Basic 去掉屏蔽 REST API 功能,这样没有选项了,就不能说我了😓。

当然如果你还想屏蔽 REST API 功能,只能使用代码了:

代码语言:javascript
复制
// 屏蔽 REST API
remove_action('init',   'rest_api_init' );
remove_action('rest_api_init', 'rest_api_default_filters', 10 );
remove_action('parse_request', 'rest_api_loaded' );

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);

remove_action('xmlrpc_rsd_apis', 'rest_output_rsd');

remove_action('auth_cookie_malformed', 'rest_cookie_collect_status');
remove_action('auth_cookie_expired', 'rest_cookie_collect_status');
remove_action('auth_cookie_bad_username', 'rest_cookie_collect_status');
remove_action('auth_cookie_bad_hash', 'rest_cookie_collect_status');
remove_action('auth_cookie_valid', 'rest_cookie_collect_status');
remove_filter('rest_authentication_errors', 'rest_cookie_check_errors', 100 );

添加代码之前一定要三思哦,由于屏蔽 REST API 而产生的任何问题,WPJAM Basic 可不再背锅了哦。😆