WooCommerce-根据用户角色重定向登录用户

时间:2019-03-08 08:57:35

标签: php wordpress woocommerce woocommerce-subscriptions

这是一个基于WooCommerce会员资格和订阅的查询。

我还必须补充一点,我也正在尝试确定是否适合做我正在做的事情。

有很多解决方案,可以在用户登录后重定向用户,但是我遇到一种情况,当用户单击指向描述并允许您成为会员的页面的特定链接时,我想重定向具有“订户”角色的用户。因此,尽管我不想隐藏“立即加入”等,但我只希望那些用户重定向到“我的帐户”页面。

同样,有各种各样的角色和重定向插件,但在这种特定情况下似乎没有帮助。因此,我使用的代码来源在这里:SOURCE,我正在寻找类似的东西:

function eks_redirect_users_by_role() {

    global $post;
    $current_user   = wp_get_current_user();
    $role_name      = $current_user->roles[0];


    if ( 'subscriber' === $role_name && $post->ID == 47145)  {
        wp_redirect( '/my-account' );
    } 

} 
add_action( 'admin_init', 'eks_redirect_users_by_rol
e' );

因此,如果用户角色是订户,并且他们尝试访问该页面的想法,该页面将被重定向。

目前,它确实会退回到一个产品页面,上面写着“您已经具有会员资格”,但是要完成多个步骤。

2 个答案:

答案 0 :(得分:1)

这可能是实现您的请求的更有用和更合适的方法。

function redirection_based_user_role(){

    $current_user   = wp_get_current_user();
    $role_name      = $current_user->roles[0];
    $postid         = get_the_ID();

    if ( 'subscriber' === $role_name && $postid == 47145  ) {
        wp_redirect( home_url( '/my-account' ), 301 );
        exit;
    }
}
add_action( 'template_redirect', 'redirection_based_user_role' );

希望这行得通。

答案 1 :(得分:0)

我能够通过以下方式实现想要的愿望:

function eks_redirect_user() {

    $current_user   = wp_get_current_user();
    $role_name      = $current_user->roles[0];
    $postid = get_the_ID();

    if ( 'subscriber' === $role_name && $postid == 47145  ) { ?>
        <script>
function redirectPage() {

    window.location = "/my-account/";
}

redirectPage();
</script>

<?php
        exit;
    }

}
add_action('wp_footer', 'eks_redirect_user' );

问题在于,这是一个相当不整洁的解决方案,因为重定向感觉很奇怪。我不确定使用wp_redirect是否会更好。我决定要做的就是只禁用页面上具有主要会员信息的按钮,而不是将每个号召性用语重定向到帐户页面,这似乎是一个更优雅的解决方案。