Php WordPress:当不处于特定用户角色时,将主页和页面重定向到帐户页面

Php WordPress:当不处于特定用户角色时,将主页和页面重定向到帐户页面,php,wordpress,redirect,Php,Wordpress,Redirect,我想将WordPress中的每个页面(包括主页)重定向到特定页面。 但我还想设置一些例外。我不想重定向的页面。 仅当当前用户不是用户角色“编辑器”的一部分时,才会发生重定向 例如: 我想将没有该角色的每个用户重定向到页面ID为9的页面。 但ID为1、2、3和4的页面不应重定向 我设法将主页重定向到ID为9的页面。 但只有主页 但是我怎样才能将其他页面添加到该函数中,并添加例外? 我想我必须以某种方式列出例外情况,但我现在不明白 编辑:这里还有一些背景:我有一个用户角色(在本例中为“编辑器”),拥

我想将WordPress中的每个页面(包括主页)重定向到特定页面。 但我还想设置一些例外。我不想重定向的页面。 仅当当前用户不是用户角色“编辑器”的一部分时,才会发生重定向

例如:

我想将没有该角色的每个用户重定向到页面ID为9的页面。 但ID为1、2、3和4的页面不应重定向

我设法将主页重定向到ID为9的页面。 但只有主页

但是我怎样才能将其他页面添加到该函数中,并添加例外? 我想我必须以某种方式列出例外情况,但我现在不明白

编辑:这里还有一些背景:我有一个用户角色(在本例中为“编辑器”),拥有自己的成员区域。现在我想限制每个用户和角色对整个站点的访问。但是,如果用户以“编辑器”角色登录,我希望允许他们在成员区域中导航。但是如果用户没有登录,我需要为每个人打开登录页面和注册页面。其他所有内容都应重定向到登录页面(ID 9)

这是当前代码:

function redirect_homepage() {
    if( ! is_home() && ! is_front_page() )
        return;

    wp_redirect( get_permalink('9') );
    exit;
}

add_action( 'template_redirect', 'redirect_homepage' );

我对你的编辑有什么意见:

  • 您希望只有登录用户才能访问整个页面
  • 但应该有可见的注册和登录页面,以便用户可以注册和登录
  • 这些页面是自定义页面(不是wp admin),您拥有这些页面的ID
  • 只有以“编辑器”角色登录的用户才能使用整个页面。如果您已登录,但没有“编辑”角色,则您对页面的访问权限与未登录用户相同(无访问权限/so重定向到登录页面或其他)
  • 因此,您可以将代码放入主题的functions.php文件中:

    <?php
    
    function editors_only() {
    
        /* Redirect not logged in users */
    
        // instead of '12' and '13' you write the page ids of your login and register pages
        if ( !is_user_logged_in() && !is_page( 12 ) && !is_page( 13 ) ) {
            wp_redirect( get_permalink(12) ); // redirect to login page
            exit;
        }
    
        /* Redirect logged in users */
    
        if ( is_user_logged_in() ) {
    
            $user = wp_get_current_user(); // get current user
            $user_access = false; // set boolean for access to false
            if ( in_array( 'editor', (array) $user->roles ) ) {
                $user_access = true; // if user role correct set boolean to true
            }
    
            if ( $user_access == false ) { // is user has not the editor role
                wp_redirect( get_permalink(12) ); // redirect to login page
                exit;
            }
        }
    }
    add_action( 'wp', 'editors_only' ); 
    
    ?>
    
    
    

    我认为这不是最好的做法,也不打算将您登录的用户重定向到您的登录页面,因为他们已经登录,但只是没有“编辑”角色。您可能有一个
    升级帐户
    页面或其他页面用于此角色的用户。您可以在“重定向未登录用户”代码(另一个
    &&!is_page(id)
    )中添加此页面id,如果用户访问为false,则将此页面id放入
    获取永久链接(id)
    功能中。

    您好,谢谢。但我需要它在我的网站上的每一个网站。不仅仅是书页。我尝试在没有
    is_page()
    的情况下使用它,但这没有帮助。目前,每个登录的用户都可以访问主页和其他页面类型,如类别。我添加了一些关于检查登录状态和类别/单个页面的说明。如果它仍然不能解决你的问题,也许你可以给我一些关于什么样的用户应该访问什么的详细信息。其余的都被重定向了。再次感谢您!我尽了最大努力,但没用。以下是一些背景:我有一个用户角色(在本例中为“编辑器”),具有自己的成员区域。现在我想限制每个用户和角色对整个站点的访问。但是,如果用户以“编辑器”角色登录,我希望允许他们在成员区域中导航。但是如果用户没有登录,我需要为每个人打开登录页面(自己的页面,而不是WP登录)和注册页面。其他一切都应该重定向到登录页面(ID 9)。好的,这有点不同。我编辑了我的全部答案,希望它能解决你的问题。很好,就是这样。这让我发疯……;)