[英]Wordpress: If user role is 'travel agent' redirect to 'my-account'
我使用add_role( 'travel_agent', 'Travel Agent', array( 'book_hotel' ) );
創建了一個自定義角色“ Travel Agent” add_role( 'travel_agent', 'Travel Agent', array( 'book_hotel' ) );
在我的主題functions.php
但是,我不希望該用戶訪問儀表板,因此我想在登錄后將其重定向到“我的帳戶”。
我在wp-login.php / functions.php上使用此代碼,沒有任何運氣:
function redirect_agents() {
if ( current_user_can('book_hotel') ){
return '/my-account';
}
}
add_filter('login_redirect', 'redirect_agents');
但是,我不會被重定向。。但是,如果我在功能.php中使用不帶If的代碼,如下所示:
function redirect_agents() {
return '/my-account';
}
add_filter('login_redirect', 'redirect_agents');
它可以工作,但是所有用戶都將重定向到我的帳戶。 任何幫助是極大的贊賞!
為什么不使用WordPress全局$ current_user。
if(in_array('travel_agent', $current_user->roles)) {
return '/my-account';
}
login_redirect
過濾器接受三個參數: redirect_to
(包含當前重定向值), request
(用戶來自的URL)和user
(作為WP_User對象登錄的用戶)。
您可以在函數內使用user
參數來確定是否重定向:
add_filter( "login_redirect", "custom_login_redirect", 10, 3 );
function custom_login_redirect( $redirect_to, $request, $user )
{
if ( in_array( "role_name", $user -> roles ) )
{
return "/hello-world";
}
// Remember to return something just in case,
// as filters can possibly block execution if
// they do not return anything.
else
{
return $redirect_to;
}
}
您可能還需要驗證$user
是正確的WP_User對象,以確保正確執行。
您可以嘗試使用$ current_user全局變量,但是在執行login_redirect
時可能會或可能不會定義它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.