使用普通的Wordpress安装,订阅者可以访问/wp-login.php,登录并访问仪表板。
我发现在安装WooCommerce之后,如果订阅者登录然后尝试重新访问wp-admin或wp-login.php,则会将其重定向到WooCommerce设置中设置的my-account页面。
我想知道是否有任何方法可以删除此功能,因为它不适合我的网站。
任何想法都非常感激。
解决方案
我找到了一个解决方案并将其发布在related question
上答案 0 :(得分:1)
您可以使用WooCommerce挂钩重定向具有不同角色的用户,请参阅文档:https://docs.woocommerce.com/document/introduction-to-hooks-actions-and-filters/
我只是谷歌'woocommerce重定向用户',你的回答出现在第一个结果中:)
因此,您可以使用Woocommerce挂钩过滤器 woocommerce_login_redirect 解决您的网站问题,根据用户角色重定向到所需的网页。
function wc_custom_user_redirect( $redirect, $user ) {
// Get the first of all the roles assigned to the user
$role = $user->roles[0];
$dashboard = admin_url();
$myaccount = get_permalink( wc_get_page_id( 'myaccount' ) );
if( $role == 'administrator' ) {
//Redirect administrators to the dashboard
$redirect = $dashboard;
} elseif ( $role == 'shop-manager' ) {
//Redirect shop managers to the dashboard
$redirect = $dashboard;
} elseif ( $role == 'editor' ) {
//Redirect editors to the dashboard
$redirect = $dashboard;
} elseif ( $role == 'author' ) {
//Redirect authors to the dashboard
$redirect = $dashboard;
} elseif ( $role == 'customer' || $role == 'subscriber' ) {
//Redirect customers and subscribers to the "My Account" page
$redirect = $myaccount;
} else {
//Redirect any other role to the previous visited page or, if not available, to the home
$redirect = wp_get_referer() ? wp_get_referer() : home_url();
}
return $redirect;
}
add_filter( 'woocommerce_login_redirect', 'wc_custom_user_redirect', 10, 2 );
答案 1 :(得分:1)
这是实现"订户"用户角色:
// Conditional function code for 'subscriber' User Role
function is_subscriber_user(){
if( current_user_can('subscriber') ) return true;
else return false;
}
// Redirect 'subscriber' User Role to the User edit prodile on WooCommerce's My Account
// So when he get looged or it register too
add_filter('template_redirect', 'wp_subscriber_my_account_redirect' );
function wp_subscriber_my_account_redirect() {
if( is_subscriber_user() && is_account_page() )
wp_redirect( get_edit_profile_url( get_current_user_id() ) );
}
// Prevent automatic woocommerce redirection for 'subscriber' User Role
add_filter( 'woocommerce_prevent_automatic_wizard_redirect', 'wc_subscriber_auto_redirect', 20, 1 );
function wc_subscriber_auto_redirect( $boolean ) {
if( is_subscriber_user() )
$prevent_access = true;
return $boolean;
}
// Allow 'subscriber' User Role to view the Dashboard
add_filter( 'woocommerce_prevent_admin_access', 'wc_subscriber_admin_access', 20, 1 );
function wc_subscriber_admin_access( $prevent_access ) {
if( is_subscriber_user() )
$prevent_access = false;
return $prevent_access;
}
// Show admin bar for 'subscriber' User Role
add_filter( 'show_admin_bar', 'wc_subscriber_show_admin_bar', 20, 1 );
function wc_subscriber_show_admin_bar( $show ) {
if ( is_subscriber_user() )
$show = true;
return $show;
}
代码进入活动子主题(或活动主题)的function.php文件。
经过测试和工作。
如果您想要"订阅者"要将用户重定向到信息中心而不是编辑个人资料,您只需将
get_edit_profile_url()
功能替换为get dashboard url()
...