Verhindern Sie, dass WooCommerce wp-login.php und wp-admin auf Kontoseiten umleitet
Lesezeit: 3 Minuten
LauraDie Entdeckerin
Mit einer Plain-Vanilla-Wordpress-Installation kann ein Abonnent auf /wp-login.php zugreifen, sich anmelden und das Dashboard besuchen.
Ich habe festgestellt, dass ein Abonnent nach der Installation von WooCommerce, wenn er angemeldet ist und dann versucht, die wp-admin oder wp-login.php erneut aufzurufen, auf die in den WooCommerce-Einstellungen festgelegte Seite „Mein Konto“ umgeleitet wird.
Ich habe mich gefragt, ob es irgendwie möglich ist, diese Funktionalität zu entfernen, da sie für meine Website nicht geeignet ist.
Alle Gedanken sehr geschätzt.
Lösung
Ich habe eine Lösung gefunden und sie zu dieser verwandten Frage gepostet
LoicTheAztec
Hier eine Möglichkeit, dies für die Benutzerrolle “Abonnent” zu erreichen:
// 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;
}
Der Code wird in der function.php-Datei des aktiven untergeordneten Designs (oder aktiven Designs) abgelegt.
Getestet und funktioniert.
Wenn Sie den Benutzer “Abonnent” möchten zum Dashboard umgeleitet werden Anstatt das Profil zu bearbeiten, müssen Sie nur ersetzen get_edit_profile_url() Funktion durch get dashboard url()…
Ich habe gerade ‘Woocommerce-Abonnenten umleiten’ gegoogelt und Ihre Antwort kam im ersten Ergebnis 🙂
So können Sie das Problem Ihrer Website mit dem Woocommerce-Hook-Filter lösen woocommerce_login_redirect um basierend auf der Benutzerrolle auf eine gewünschte Seite umzuleiten.
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 );
Danke dafür. Das hatte ich auch gefunden und funktioniert nicht pervers. Ich bin den Code durchgegangen und der Hook wird nie aufgerufen, da es sich nicht um ein Woocommerce-Login, sondern um ein WordPress-Login handelt!
– LauraTheExplorer
19. Januar 2018 um 0:07 Uhr
10991200cookie-checkVerhindern Sie, dass WooCommerce wp-login.php und wp-admin auf Kontoseiten umleitetyes