2014-06-24 9 views
6

मैं के साथ एक वेबसाइट डिजाइनिंग हूँ वाणिज्य वर्डप्रेस लुभाने मैं अलग लॉगिन होता है और this solutionwoocommerce में पंजीकरण करते समय स्वचालित लॉगिन रोकें और लॉगिन पृष्ठ पर रीडायरेक्ट करें?

मैं में लॉग इन के बिना सफल पंजीकरण के बाद पेज लॉगइन करने के लिए पंजीकरण पृष्ठ कैसे अनुप्रेषित कर सकते हैं के संदर्भ द्वारा रजिस्टर पेज। उपयोगकर्ता वहाँ के लिए लॉग इन करने की जरूरत है ईमेल किए गए उपयोगकर्ता नाम और पासवर्ड के साथ।

अपना लॉगिन पेज

www.example.com/my-account/

और पंजीकरण पृष्ठ

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

है

उत्तर

11

खोज का एक बहुत बाद मैं इस

चरण 1 के लिए समाधान: जोड़ने WP Approve User

चरण 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_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', $ रीडायरेक्ट));' कोड की यह पंक्ति मैं 'woocommerce से मिला/शामिल/वर्ग WC-फार्म handler.php' लाइन नहीं 905 मैं बस आपके उत्तर के साथ suprised। आप add_action –

+0

@MakarandMane का उपयोग कैसे कर सकते हैं - जबकि यह तकनीकी रूप से सही है कि इसे add_filter का उपयोग करना चाहिए, add_action वास्तव में अभी भी काम करेगा। add_action अनिवार्य रूप से add_filter के लिए एक रैपर है - यह add_filter को कॉल करता है और परिणाम देता है। यही कारण है कि यह जवाब अभी भी काम करेगा, भले ही add_action का उपयोग किया गया हो। भले ही, इस तरह के एक छोटे से बदलाव के लिए उत्तर को संपादित करना बेहतर होगा, एक पूरी तरह से नया लागू करने के लिए, जो कि एक मामूली विस्तार को छोड़कर बिल्कुल वही है। – butlerblog

3

नीचे कोड की पंक्ति woocommerce/includes/class-wc-form-handler.php लाइन पर स्थित है कोई 905.

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

मैं @ द्वारा दिए गए जवाब को सही user3518270

उर विषय समारोह फाइल करने के लिए इन कोड जोड़

नीचे पंक्ति काम नहीं करेगी क्योंकि यह woocommerce द्वारा उपयोग किया जाने वाला फ़िल्टर है इसलिए add_action()

के बजाय add_filter() का उपयोग करने की आवश्यकता है
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); 
संबंधित मुद्दे