2014-06-24 6 views
6

Io sono la progettazione di un sito web con corteggiare commerce wordpress ho separato il login e registrare pagina riferimento alla this solutionImpedisci il login automatico quando ti registri in woocommerce e reindirizza alla pagina di login?

Come posso reindirizzare la pagina di registrazione alla pagina di login dopo la registrazione di successo senza il login. L'utente effettua il login lì con il nome utente e la password inviati

la mia pagina di login è

www.example.com/my-account/

e pagina di registrazione è

www.example.com/my-account/?action=register

risposta

11

Dopo un sacco di ricerca ho trovato la soluzione per questo

Step1: aggiungere WP Approve User

Step2: aggiungere questi codice per ur file funzioni 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); 
+0

'wp_redirect (apply_filters ('woocommerce_registration_redirect', $ redirect));' Questa riga di codice che ho ricevuto da 'woocommerce/include/classe-wc-form-handler.php' linea n ° 905. ho appena sorpreso con la tua risposta. Come si può usare add_action –

+0

@MakarandMane - mentre è tecnicamente corretto che questo dovrebbe usare add_filter, add_action funzionerà ancora. add_action è essenzialmente un wrapper per add_filter - chiama add_filter e restituisce il risultato. Ecco perché questa risposta funzionerebbe anche se fosse stato utilizzato add_action. Indipendentemente da ciò, per una modifica così piccola sarebbe meglio modificare la risposta piuttosto che applicarne una completamente nuova che è esattamente la stessa eccetto per quel particolare minore. – butlerblog

3

Sotto riga di codice si trova a woocommerce/includes/class-wc-form-handler.php linea n ° 905.

wp_redirect(apply_filters('woocommerce_registration_redirect', $redirect));

ho correggere risposta data da @ user3518270

La riga inferiore non funziona in quanto è un filtro usato da woocommerce Quindi è necessario utilizzare add_filter() invece di 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); 
Problemi correlati