自定义登录页面、重定向和限制

时间:2021-10-13 作者:Maluco

我的自定义登录页面存在重定向和限制问题。任何用户都可以浏览“社区”页面,但不能访问“分销商”页面。我已经设置了一个规则,所以如果任何人没有登录,都会转发到主页。登录的用户将被重定向到“分销商”页面。除了在Firefox上,一切似乎都很好。对于自定义登录页面,我使用Elementor的表单。

这是我必须将未登录用户限制在某些页面的自定义代码。

/*
*   Restrict non logged users to certain pages
*/
add_action(\'template_redirect\',\'my_non_logged_redirect\', 10, 2);
function my_non_logged_redirect()
{
    if ((is_page(\'distributors\') || is_page(\'distributor-success-stories\') || is_page(\'distributor-solutions\') || is_page(\'distributor-software\') || is_page(\'distributor-product-software\') || is_page(\'product-smart-projectors\') || is_page(\'distributor-product\') || is_page(\'product-accessories\') || is_page(\'distributor-press\') || is_page(\'distributor-media\') || is_page(\'distributor-firmware\')) && !is_user_logged_in())
    {
        wp_redirect( \'/login\' );
        die();
    }
}
以下是注册用户成功登录后我必须重定向的代码

/**
 * Redirect non-admins to the homepage after logging into the site.
 */
function custom_login_redirect( $redirect_to, $request, $user  ) {
    return ( is_array( $user->roles ) && in_array( \'administrator\', $user->roles ) ) ? admin_url() : \'/distributors\';
}
add_filter( \'login_redirect\', \'custom_login_redirect\', 10, 3 );
同样,这在Chrome、Safari和Edge上运行良好,但在Firefox上却不行。有人能帮我吗?

1 个回复
SO网友:tiago calado

重定向与浏览器没有太多关系,如果您尝试清理firefox缓存,可能就是这样。

此外,在用户成功登录后使用“/分发服务器”作为url有时可能不起作用,可以重定向为url链接加上“/分发服务器”,使用起来更安全

home_url().\'/distributors\';
我在函数中使用此函数。php登录时重定向

// redirects user after login
if (! function_exists(\'ctm_login\')) {
    add_action(\'wp_login\', \'ctm_login\');
    function ctm_login(){wp_redirect(home_url());exit;}
}
所以你的情况应该是

// redirects user after login
if (! function_exists(\'ctm_login\')) {
    add_action(\'wp_login\', \'ctm_login\');
    function ctm_login(){
       $url = ( is_array( $user->roles ) && in_array( \'administrator\', $user->roles ) ) ? admin_url() : home_url().\'/distributors\';
       wp_redirect($url);
       exit;
    }
}
这是登录后的重定向,但有一个问题,如果有人转到url并写下;www.yourSite。com/分销商“;页面是否会加载?。。。