You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress如何仅允许subscriber角色访问特定页面并修复相关代码

修复后的订阅者专属页面访问控制代码

原代码存在两个核心问题:

  • 逻辑写反:原判断条件将未登录用户也纳入了不需要重定向的范围,和需求完全相悖
  • 权限判断不严谨:直接用current_user_can校验角色名存在小概率兼容性问题,更稳妥的方式是先获取用户角色列表再匹配
add_action( 'template_redirect', function() {
    global $post;
    // 替换为你要限制的目标页面ID
    $target_page_id = 1052;
    // 匹配目标页面及其子页面
    if ( is_page() && ( $post->post_parent == $target_page_id || is_page( $target_page_id ) ) ) {
        $redirect = true;
        // 仅已登录且角色为subscriber的用户不需要重定向
        if ( is_user_logged_in() ) {
            $current_user = wp_get_current_user();
            $user_roles = $current_user->roles;
            if ( in_array( 'subscriber', $user_roles ) ) {
                $redirect = false;
            }
        }
        // 无权限用户跳转至自定义登录页
        if ( $redirect ) {
            wp_redirect( get_site_url() . '/custom-url-login' );
            exit;
        }
    }
} );

使用说明

  • 替换$target_page_id的数值为你实际要限制的页面ID即可生效
  • 如果不需要限制该页面的子页面,删除判断条件里的$post->post_parent == $target_page_id || 部分即可

内容的提问来源于stack exchange,提问作者jahn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:15:00