2014-06-24 42 views
6

girişle ayrı var ve oturum olmadan başarılı kayıt işleminden sonra Giriş sayfasına kayıt sayfası yönlendirebilirsiniz nasıl this solutionWoocommerce'e kaydolurken otomatik giriş yapmayı engelleyin ve giriş sayfasına yönlendirin mi? Ben ile bir web sitesi tasarlama

referans alınarak sayfayı kayıt ticaret wordpress woo. Kullanıcı giriş yapmanız gerekecek e-postalanan kullanıcı adı ve şifre ile.

benim giriş sayfası

ve kayıt sayfası

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

olduğunu

www.example.com/my-account/ olduğunu arama bir sürü sonra

cevap

11

Bu

1. adım için çözüm bulundu: eklemek WP Approve User

Adım 2: ur tema fonksiyonu dosyasına

/* 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', $ yönlendirme));' ben WooCommerce 'aldığım kod satırı/includes/sınıf wc-form-handler.php' çizgi sadece hayır 905. ben cevabın ile şaşırttı. Add_action –

+0

@MakarandMane'i nasıl kullanabileceğinizi - teknik olarak bunun add_filter kullanması gerektiği doğru olsa da, add_action aslında çalışmaya devam edecektir. add_action aslında add_filter için bir sarıcıdır - add_filter çağırır ve sonucu döndürür. Bu nedenle, add_action kullanılsa bile bu cevap hala işe yarayacaktı. Ne olursa olsun, böylesine küçük bir değişiklik için cevabı düzenlemek, bu küçük detay haricinde tamamen aynı olan tamamen yeni olanı uygulamaktan daha iyi olacaktır. – butlerblog

3

kod satırı woocommerce/includes/class-wc-form-handler.php çizgisinde bulunan Aşağıda hiçbir 905.

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

Ben @ verdiği cevabı düzeltme

user3518270 bu kodu ekleyin

Aşağıdaki satır, woocommerce tarafından kullanılan filtre olduğundan çalışmaz. Bu yüzden add_filter() yerine add_action() kullanılmalıdır.

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); 
İlgili konular