相信很多WordPress的站长都遇到后台以下几个问题,下面我们就来详细教大家如何处理解决这些问题!
1.已检测到活动的PHP会话
2.REST API遇到了错误
3.您的站点不能完成环回请求
等等问题,这些问题主要是以下原因造成的,下面我们接着看!
首先,我们开看看什么是REST API?
WordPress REST API为WordPress数据类型提供API端点,允许开发人员通过发送和接收JSON(JavaScript对象符号)对象远程与站点进行交互。 JSON是一种开放标准的数据格式,它是轻量级和可读的,看起来像是在JavaScript中的对象; 由此得名。 当您向API发送内容或发出请求时,将以JSON返回响应。 这使开发人员能够从客户端JavaScript或外部应用程序创建,阅读和更新WordPress内容,甚至是用PHP语言编写的内容。
简单的说就是通过这个 REST API 可以很轻松的获取网站的数据,可应用于其他网站、手机 APP 或小程序等;但对于一般的网站是没有需要的,反而会拖累网站的速度,而且 REST API 采用 GET 请求方式,这就为 DDOS 攻击提供了一个新的攻击途径,所以我们应尽可能的禁止掉这些不必要的功能需求,并且去掉 head 里面输出 wp-json 链接。
既然他报错了,我们先来看看接口是否正常开启。查看 WP JSON REST API 是否开启的方法:
首先,浏览器中打开:http://域名/wp-json/,若有以下输出数据则WP JSON REST API及是开启状态。
有数据输出说明接口正常开启,由于我们用不到REST API接口,所以接下来我们需要关闭这个功能。如果我们想兼容所有版本的 WordPress,我们可以直接使用插件Disable REST API或Disable WP REST API来完全禁用 REST API;但我更倾向纯代码的方法,在这里就介绍下代码版兼容所有 WordPress 版本的完全禁用 REST API 或者说移除 head 里面 wp-json 链接的方法。
将下面的代码添加到当前主题函数模板 functions.php 中:
* 屏蔽 REST API
*/
add_filter('json_enabled', '__return_false');
add_filter('json_jsonp_enabled', '__return_false');
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', 'demo_disable_rest_api');
function demo_disable_rest_api($access)
{
return new WP_Error('rest_disabled', __('The REST API on this site has been disabled.'), ['status' => rest_authorization_required_code()]);
}
接着,我们再次打开http://域名/wp-json/ 看看WP JSON REST API 是否已经关闭。
如出现上图中这样说明WP JSON REST API已经成功关闭了
关闭接口之后我们会发现在健康状态栏依然会有这2个报错。没关系,我们继续!
站点健康功能,用于了解当前网站运行中有哪些问题需要改进,位置在WP后台→工具→站点健康。
该功能源自 Site Health Tool Manager 插件,也就是插件的简化版。
为什么要集成网站健康检测功能,据说是为开发人员方便测试,有人说很有用,个人认为没有任何用处,暴露主机环境信息,另外不知道这玩意是否经常自己在后台偷偷运行检测,还是打开后再执行检测,试过一次就再也不想打开。
可以通过下面的方法有选择性地禁止某些项目检测或者禁止全部项目检测。
将下面的代码添加到当前主题函数模板 functions.php 中:
function prefix_remove_site_health( $tests ) {
unset( $tests['direct']['php_version'] );//禁止PHP检测
return $tests;
}
add_filter( 'site_status_tests', 'prefix_remove_site_health' );
通过site_status_tests过滤器,返回时触发WP_Site_Health::get_tests()
注:$tests是一个数组。包括$tests['direct']与$tests['async'],在加载站点健康状态之前,直接测试在 PHP 中运行,并且在页面加载之后通过 Ajax 调用触发异步测试。
禁用更多功能检测请对照: /wp-admin/includes/class-wp-site-health.php
例如:
unset( $tests['direct']['wordpress_version'] );//禁止程序版本检测
unset( $tests['direct']['plugin_version'] );//禁止插件版本检测
一行一个,以此类推。
也可以索性禁止全部,代码如下:
* 屏蔽 健康状态检测
*/
function prefix_remove_site_health( $tests ) {
unset( $tests['direct']['php_version'] );
unset( $tests['direct']['wordpress_version'] );
unset( $tests['direct']['plugin_version'] );
unset( $tests['direct']['theme_version'] );
unset( $tests['direct']['sql_server'] );
unset( $tests['direct']['php_extensions'] );
unset( $tests['direct']['php_default_timezone'] );
unset( $tests['direct']['php_sessions'] );
unset( $tests['direct']['utf8mb4_support'] );
unset( $tests['direct']['https_status'] );
unset( $tests['direct']['ssl_support'] );
unset( $tests['direct']['scheduled_events'] );
unset( $tests['direct']['http_requests'] );
unset( $tests['direct']['is_in_debug_mode'] );
unset( $tests['direct']['dotorg_communication'] );
unset( $tests['direct']['background_updates'] );
unset( $tests['direct']['loopback_requests'] );
unset( $tests['direct']['rest_availability'] );
return $tests;
}
add_filter( 'site_status_tests', 'prefix_remove_site_health' );
至此检测项全部禁止后,你会看到 站点健康 检测结果显示100%,完美!
2. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站不保证所提供下载的资源的准确性、安全性和完整性,源码仅供下载学习之用!
8. 如用于商业或者非法用途,与本站无关,一切后果请用户自负!
9. 如遇到加密压缩包,默认解压密码为"www.kuwz.cn",如遇到无法解压的请联系管理员!
酷网站 » 关于WordPress后台站点健康提示REST API等错误的解决办法,还你100%健康站点
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 酷网站与独木源码网啥关系?