设置网站 WordPress Rest API 访问权限

《设置网站 Wordpress Rest API 访问权限》

禁用方法别人已经发了很多,但当年喊得最大声的,鼓吹禁用 Rest API 多好多棒的那批人,已经偷偷又把这功能打开了。

现在主流的流行的WP第三方客户端都是基于Rest API 实现的,包括守望轩大佬家的微信小程序等,还有跟微信公众号的互动,手机上独立APP等,这都是关注运营的站长最喜欢玩的。禁用了就没饭恰了。

至于站长有时候有需求用些自己搞的小工具自动发发文章什么的,用的最多的也是 Rest API 接口。

使用 wordpress 的过滤器来要求对 API 使用者进行身份验证,这样就可以有效地防止了匿名外部访问。以下代码就实现可以正常使用基于Rest API 的第三方客户端,但普通访客无法访问接口。

//设置 REST API 请求权限 
add_filter('rest_authentication_errors', function($result) {
    if (true === $result || is_wp_error($result)) {
        return $result;
    }
    if (!is_user_logged_in()) {
        return new WP_Error(
            'rest_not_logged_in',
            __('You are not currently logged in.'),
            array('status' => 401)
        );
    }
    return $result;
});

代码写到主题下 functions.php 文件内任意位置。

代码效果:https://www.guihet.com/wp-json/
默认状态:示例地址

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

  1. worldccf worldccf 说道:

    wp5.8,放在主题functions.php第一行也不生效诶

    1. 黑鸟 说道:

      在用 WP 5.9.1 测试没有问题

      1. 百克 百克 说道:

        那个评论等级钩子函数怎么整,求大佬解决疑惑

  2. worldfan 说道:

    谢谢博主 学习下