WooCommerce - 根据角色重定向登录用户
WooCommerce - Redirect Logged In Users Based on their Role
这是一个基于 WooCommerce 会员资格和订阅的查询。
我必须补充一点,我也在尝试确定我正在做的事情是否是好的用户体验。
有很多解决方案可以在用户登录后重定向他们,但我有一种情况,当用户单击指向描述并允许您的页面的特定链接时,我想重定向具有 'subscriber' 角色的用户成为会员。因此,虽然我不想隐藏 'join now' 等,但我只想将它们重定向到我的帐户页面。
同样有各种角色和重定向插件,但 none 似乎在这种特定情况下有所帮助。所以我使用的代码源在这里: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_role' );
因此,如果用户角色是订户,并且他们尝试访问该页面的想法,它就会被重定向。
目前,它确实返回到一个产品页面,上面写着'you already have a membership',但要经过多个步骤才能到达。
我能够通过以下方式实现我想要的:
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 是否会更好。我决定只禁用包含主要会员信息的页面上的按钮,而不是将每个号召性用语重定向到帐户页面,这似乎是一个更优雅的解决方案。
这可能是实现您的要求的更有用和正确的方法。
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' );
希望这有效。
这是一个基于 WooCommerce 会员资格和订阅的查询。
我必须补充一点,我也在尝试确定我正在做的事情是否是好的用户体验。
有很多解决方案可以在用户登录后重定向他们,但我有一种情况,当用户单击指向描述并允许您的页面的特定链接时,我想重定向具有 'subscriber' 角色的用户成为会员。因此,虽然我不想隐藏 'join now' 等,但我只想将它们重定向到我的帐户页面。
同样有各种角色和重定向插件,但 none 似乎在这种特定情况下有所帮助。所以我使用的代码源在这里: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_role' );
因此,如果用户角色是订户,并且他们尝试访问该页面的想法,它就会被重定向。
目前,它确实返回到一个产品页面,上面写着'you already have a membership',但要经过多个步骤才能到达。
我能够通过以下方式实现我想要的:
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 是否会更好。我决定只禁用包含主要会员信息的页面上的按钮,而不是将每个号召性用语重定向到帐户页面,这似乎是一个更优雅的解决方案。
这可能是实现您的要求的更有用和正确的方法。
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' );
希望这有效。