usuarios usuario sesión sesion registros redireccionar plugin para inicio iniciar hacer gestion despues contraseña como php wordpress login woocommerce

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);