php - sesión - usuario y contraseña en wordpress
¿Evita el inicio de sesión automático cuando se registra en woocommerce y lo redirige a la página de inicio de sesión? (2)
Estoy diseñando un sitio web con woo commerce wordpress. He separado el inicio de sesión y la página de registro por referencia a esta solución.
¿Cómo puedo redirigir la página de registro a la página de inicio de sesión después de un registro exitoso sin iniciar sesión? El usuario debe iniciar sesión allí con el nombre de usuario y la contraseña por correo electrónico.
mi página de inicio de sesión es
www.example.com/my-account/
y la página de registro es
www.example.com/my-account/?action=register
La línea debajo del código se encuentra en woocommerce/includes/class-wc-form-handler.php
línea no 905.
wp_redirect( apply_filters( ''woocommerce_registration_redirect'', $redirect ) );
Corrijo la respuesta dada por @ user3518270
La línea siguiente no funcionará, ya que es el filtro que utiliza woocommerce. Por lo tanto, es necesario usar add_filter () en lugar de add_action ()
add_action(''woocommerce_registration_redirect'', ''user_autologout'', 2);
/* Stop auto login */
function user_autologout(){
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
$approved_status = get_user_meta($user_id, ''wp-approve-user'', true);
//if the user hasn''t been approved yet by WP Approve User plugin, destroy the cookie to kill the session and log them out
if ( $approved_status == 1 ){
return $redirect_url;
}
else{
wp_logout();
return get_permalink(woocommerce_get_page_id(''myaccount'')) . "?approved=false";
}
}
}
add_filter(''woocommerce_registration_redirect'', ''user_autologout'', 2);
function registration_message(){
$not_approved_message = ''<p class="registration">Send in your registration application today!<br /> NOTE: Your account will be held for moderation and you will be unable to login until it is approved.</p>'';
if( isset($_REQUEST[''approved'']) ){
$approved = $_REQUEST[''approved''];
if ($approved == ''false'') echo ''<p class="registration successful">Registration successful! You will be notified upon approval of your account.</p>'';
else echo $not_approved_message;
}
else echo $not_approved_message;
}
add_action(''woocommerce_before_customer_login_form'', ''registration_message'', 2);
Después de mucha búsqueda encontré la solución para esto
Paso 1: agregar usuario de aprobación de WP
Paso 2: agrega estos códigos a tu archivo de función de tema
/* Stop auto login */
function user_autologout(){
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
$approved_status = get_user_meta($user_id, ''wp-approve-user'', true);
//if the user hasn''t been approved yet by WP Approve User plugin, destroy the cookie to kill the session and log them out
if ( $approved_status == 1 ){
return $redirect_url;
}
else{
wp_logout();
return get_permalink(woocommerce_get_page_id(''myaccount'')) . "?approved=false";
}
}
}
add_action(''woocommerce_registration_redirect'', ''user_autologout'', 2);
function registration_message(){
$not_approved_message = ''<p class="registration">Send in your registration application today!<br /> NOTE: Your account will be held for moderation and you will be unable to login until it is approved.</p>'';
if( isset($_REQUEST[''approved'']) ){
$approved = $_REQUEST[''approved''];
if ($approved == ''false'') echo ''<p class="registration successful">Registration successful! You will be notified upon approval of your account.</p>'';
else echo $not_approved_message;
}
else echo $not_approved_message;
}
add_action(''woocommerce_before_customer_login_form'', ''registration_message'', 2);