2014-06-24 14 views
6

Jestem projektowania strony internetowej z woocommerce wordpress Mam osobny login i zarejestrować stronę w odniesieniu do this solutionZapobieganie automatycznemu logowaniu przy rejestracji w woocommerce i przekierowaniu na stronę logowania?

Jak mogę przekierować na stronę rejestracyjną do strony logowania po udanej rejestracji bez zalogowany. Użytkownik trzeba tam się zalogować z e-mailem z nazwą użytkownika i hasłem.

moja strona logowania jest

www.example.com/my-account/

i strona rejestracja jest

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

Odpowiedz

11

Po wielu poszukiwaniach znalazł rozwiązanie tego

Krok 1: dodaj WP Approve User

Krok 2: dodaj te kod ur pliku funkcji motywu

/* 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', $ przekierowanie));' Ta linia kodu dostałem od 'woocommerce/includes/klasa-wc-form-handler.php' linia nr 905. Właśnie zaskoczony twoją odpowiedzią. Jak korzystać z add_action –

+0

@MakarandMane - podczas gdy jest technicznie poprawne, że powinno to używać add_filter, add_action nadal będzie działał. add_action to w zasadzie wrapper dla add_filter - wywołuje on add_filter i zwraca wynik. Dlatego ta odpowiedź nadal działałaby, mimo że zastosowano additive. Niezależnie od tego, przy tak małej zmianie lepiej byłoby edytować odpowiedź, niż zastosować zupełnie nową, z wyjątkiem tego jednego drobnego szczegółu. – butlerblog

3

Poniżej wiersz kodu znajduje się w woocommerce/includes/class-wc-form-handler.php linii nr 905.

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

ja sprostowanie odpowiedź udzieloną przez @ user3518270

Poniższa linia nie będzie działać, ponieważ jest filtrem używanym przez woocommerce. Więc musisz użyć add_filter() zamiast 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); 
Powiązane problemy