WordPress 站点微信小程序的常见问题

cera cera

在开始之前,要声明一下,那就是 WordPress 站点接入微信小程序涉及服务器、WordPress、小程序开发平台三个层面,三个层面都是一一对应的,缺一不可,大家碰到问题先要自己排查问题出在哪个层面从出问题概率大小依次为:WordPress→服务器→小程序开发平台。

WordPress 层面
WordPress 在 4.4 版本开始推出了 REST API,如果你使用的是最新版本的 WordPress 应该会提供 REST API 的功能。至于 REST API 是什么?要讲清楚估计要写一篇文章了,推荐你看看阮一峰写的:『RESTful API 设计指南』,看完就基本懂了。简单来说 WordPress REST API,就是用浏览器通过 http 的方式访问 WordPress 提供的 REST API 链接 ,可以获取 WordPress 网站的”内容”,这个”内容”是以 json 的格式返回到浏览器。

有关 WordPress REST API 详细的介绍详见链接:https://developer.wordpress.org/rest-api/

REST API 是 WordPress4.4 版本开始提供的功能,不过是以插件的方式提供的,WordPress 4.7 版本后才内置到系统里,如果你的 WordPress 站是 4.7 以前的版本,需要下载 api 插件:https://wordpress.org/plugins/rest-api/。

如果是 WordPress 4.7 或更高版本,要想正常访问 api,需要调整满足两个条件:

设置 WordPress 的固定链接(permalink).
URL 重写(url rewrite),也就是设置 WordPress 的伪静态。
很多站长们的小程序出现“预览空白”、“网络 404 错误”基本上都是这个 REST API 造成的,原因多是因为 WordPress 主题或者插件里给屏蔽 REST API 了,一般主题、插件为了优化 WordPress 性能都会关闭 API 接口,特别是国产的主题和插件最喜欢干这种事儿了!比如像鸟哥的 Begin 早期版本默认都是关闭“REST API”了,现在最新版的 Begin 主题已经在主题设置里提供了开启和关闭的选项了(如下图所示)!

如果你是 Begin 主题只需要不勾选这个选项即可。至于其他的主题只能你自己在主题代码里找到如下代码并注释掉来解决了:

// 屏蔽 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 );
或者

add_filter( ‘rest_authentication_errors’, function( $access ) {
return new WP_Error( ‘rest_cannot_acess’, ‘REST API 不再提供访问’, array( ‘status’ => 403 ) );
});
如果找不到上面这些代码,那么就在插件里排查了,比如 WordPress 著名的优化增强插件 「WPJAM Basic 」里就有屏蔽 REST API 功能,大家不要禁用即可,其他插件就需要自己排查了。

总之这个 屏蔽 REST API 是个很普遍的 WordPress 优化措施,主题、插件、自定义代码都有可能会存在,至于如何判断自己 WordPress 站点的 REST API 是否被关闭,一个很简单的实例就是你是否可以正常的通过 WordPress 手机客户端来管理你的 WordPress 博客,如果 REST API 关闭了,WordPress 手机客户端就会出现问题,无法正常使用,比如:不能回复评论、发布文章等等。

最后,WordPress 层面还必须要安装启用 RES API TO MiniProgram 插件,启用后插件设置里的 AppID 和 AppSecret 赋值一定要仔细对应小程序账号后台的 AppID 和 AppSecret 值,多一个空格都不行,切记了!特别是粗心大意的站长们!

cera cloudiplc tengxunyun

相关推荐