2010-11-24 24 views
6

यह कोड चेक करता है कि क्या उपयोगकर्ता पहली बार लॉग इन कर रहा है, जो पंजीकरण के बाद है। मैं उसे एक कस्टम पेज पर रीडायरेक्ट करना चाहता हूं यदि ऐसा है। अन्यथा, उसे होमपेज या व्यवस्थापक पृष्ठ पर रीडायरेक्ट करें।वर्डप्रेस में पहले लॉगिन के बाद उपयोगकर्ता को रीडायरेक्ट करें?

function mylogin_redirect() { 
    global $user_ID; 
    if($user_ID) { 
     $user_info = get_userdata($user_ID); 
     // If user_registered date/time is less than 48hrs from now 
     // Message will show for 48hrs after registration 
     if (strtotime($user_info->user_registered) > (time() - 172800)) { 
      header("Location: http://example.com/custompage"); 
     } elseif(current_user_can('manage_options')) { 
      header("Location: http://example.com/wp-admin/"); 
     } else { 
      header("Location: http://example.com/"); 
     } 
    } 
} 
add_action('wp_head', 'mylogin_redirect'); 

लेकिन यह काम नहीं करता है? मेरा अनुमान है यह wp_head में झुका है यह नहीं मिलता है ... मैं निम्नलिखित का उपयोग कर login_redirect फिल्टर करने की कोशिश की:

function mylogin_redirect($redirect_to, $url_redirect_to = '', $user = null) { 
    global $user_ID; 
    if($user_ID) { 
     $user_info = get_userdata($user_ID); 
     // If user_registered date/time is less than 48hrs from now 
     // Message will show for 48hrs after registration 
     if (strtotime($user_info->user_registered) > (time() - 172800)) { 
      return get_bloginfo('url') . "/custompage/"; 
     } elseif(current_user_can('manage_options')) { 
      return admin_url(); 
     } else { 
      return get_bloginfo('url'); 
     } 
    } 
} 
add_filter('login_redirect', 'mylogin_redirect'); 

हालांकि यह मुझ में लॉग करता है, यह एक खाली साथ बजाय कहीं भी मुझे नहीं मिल लेकिन http://example.com/wp-login.php के लिए करता है पृष्ठ।

अद्यतन: ठीक है, मुझे नहीं पता कि क्या हो रहा है। फ़िल्टर हुक का उपयोग करके, मैं केवल दूसरे लॉगिन के बाद इच्छित गंतव्य तक पहुंच सकता हूं। वास्तव में वास्तव में दूसरा लॉगिन नहीं है लेकिन लॉगिन बटन के दूसरे क्लिक पर। मैंने ऐसा किया: क्रेडेंशियल दर्ज करें -> लॉगिन -> (गलत पृष्ठ) -> वापस बटन दबाएं -> फिर से क्रेडेंशियल्स दर्ज करें -> लॉगिन -> (सही पृष्ठ)। अजीब।

उत्तर

4

आपको अपनी फ़िल्टर कॉल को समायोजित करने की आवश्यकता है;

// filter name, callback, priority, accepted args 
add_filter('login_redirect', 'mylogin_redirect', 10, 3); 
+0

यह कोशिश की, काम नहीं किया। यह अभी भी मुझे फॉर्म के बिना ../wp-login.php पर रीडायरेक्ट करता है। फ़िल्टर के साथ समस्या यह है कि पार्सर 'if' ब्लॉक में नहीं मिलता है। क्योंकि अगर मैं 'if' ब्लॉक को हटा देता हूं और इसे' return admin_url() 'कथन के साथ प्रतिस्थापित करता हूं, तो यह ठीक काम करता है। – Joann

+0

आपको वैश्विक '$ user_ID' के बजाय फ़ंक्शन में पास किए गए' $ उपयोगकर्ता' चर का उपयोग करना चाहिए - i.e. 'user-> आईडी'। – TheDeadMedic

+0

यह काम किया! लेकिन वर्डप्रेस इस 'elseif (current_user_can (' manage_options ') को पहचानने के लिए प्रतीत नहीं होता है) {return admin_url();} '। कोई उपाय? बहुत बहुत धन्यवाद!!! – Joann

संबंधित मुद्दे

 संबंधित मुद्दे