【问题标题】:Redirect WordPress User based on user role when accessing a page访问页面时根据用户角色重定向 WordPress 用户
【发布时间】:2020-02-03 09:37:37
【问题描述】:

当有人尝试根据用户角色访问特定页面时,我正在尝试创建一个简单的重定向。

我创建了一个具有会员功能的网站,它向付费会员提供某些东西。免费会员登录后只能访问一个页面,但如果他们知道付费区域的 URL,他们就可以看到内容。我想知道是否有办法创建 301 重定向,这样当免费会员尝试进入付费页面时,它会将他们重定向回免费区域。

这可能吗?如果您需要更多信息,请询问!

谢谢 大卫

【问题讨论】:

  • 你用哪个插件做会员?
  • 嗨 Rajat,我使用过用户角色编辑器、woocommerce 和重力表单。

标签: php html wordpress redirect


【解决方案1】:

你也可以这样尝试,让它对 wordpress 更友好。

function role_redirections() {
$loggedin_user = wp_get_current_user();  
if (!is_user_logged_in() || !in_array( 'memorial_user', (array) $loggedin_user->roles )) {
    $location1 =  get_option( 'siteurl' ) .'/member-portal/';
    header('Location: '.$location1.'');
    } 
}
add_action('wp_head', 'role_redirections');

【讨论】:

  • 非常感谢!我会用这个代替。
【解决方案2】:

将此代码粘贴到您的激活主题或冷冻主题 function.php 文件中

function role_redirections() {
    $logedin_user = wp_get_current_user();  
    if (!is_user_logged_in() || !in_array( 'shop_manager', (array) $logedin_user->roles )) {
        $location1 =  home_url();
        header('Location: '.$location1.'');
    } 
}
add_action('wp_head', 'role_redirections');

【讨论】:

  • 谢谢 Rajat,我会试试这个,让你知道我的进展如何。
  • 嗨 Rajat,是的,我知道了,我将更改“商店经理”以匹配我正在使用的用户角色名称。
【解决方案3】:

@rajat.gite

我试过你的回答,但它并没有按照我想要的方式工作,所以我修改了代码如下:

function role_redirections() {
$loggedin_user = wp_get_current_user();  
if (!is_user_logged_in() || !in_array( 'memorial_user', (array) $loggedin_user->roles )) {
    $location1 =  'https://www.myswansong.com/member-portal/';
    header('Location: '.$location1.'');
    } 
}
add_action('wp_head', 'role_redirections');

唯一真正的区别是修改 home_url();到一个包含我需要的完整 URL 的字符串。

感谢您的帮助。

【讨论】:

  • 您使用 URL 的方式是硬编码的,最好使用 wordpress 功能:home_url('member-portal');
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
相关资源
最近更新 更多