मैं एक नई वेबसाइट स्थापित कर रहा हूं जहां मैं ग्राहकों की एक छोटी राशि का प्रबंधन कर रहा हूं। मैंने एक मेनू पेज बनाया है कि जब उपयोगकर्ता लॉग आउट होता है तो यह मूल रूप से उपयोगकर्ता को लॉग इन करने के लिए कहता है। लेकिन जब कोई उपयोगकर्ता लॉग इन होता है और उसी मेनू पेज पर क्लिक करता है तो मैं कोड करना चाहता हूं, मैं चाहता हूं कि यह एक पर रीडायरेक्ट हो निजी पेज मैंने उनके लिए बनाया है। प्रत्येक व्यक्ति के पास पहले से ही एक निजी पृष्ठ होता है। प्रत्येक निजी पृष्ठ का URL "example.com/private-page/username/ है। यदि URL किसी व्यक्ति के लिए मौजूद नहीं है, तो मैं चाहता हूं कि कोड मूल मेनू पृष्ठ पर वापस जाए, न कि कोई पृष्ठ नहीं।

मैंने पेज को अन्य यूआरएल में रीफ्रेश करने के लिए मेटा का उपयोग करने सहित विभिन्न तरीकों का प्रयास किया है। मैं नहीं समझ सकता कि वास्तव में क्या काम नहीं कर रहा है। मैं function.php पर कोड टाइप कर रहा हूं

function userredirect(){
    $current_user = wp_get_current_user();
     if(is_user_logged_in() && is_page('Menu Page')){
         wp_redirect('https://example.com/private-page/'.$current_user->user_login.'/');
     }
}

कुछ भी नहीं होता है जब मैं मेनू पृष्ठ पर जाता हूं इसके अलावा पृष्ठ के लिए मूल सामग्री दिखाता हूं। वर्तमान में मुझे इस बारे में कोई सुराग नहीं मिला है कि वेबपेज मौजूद नहीं होने पर इसे रीडायरेक्ट करने से कैसे रोका जाए।

0
Jacob Rowe 11 अगस्त 2019, 06:10

2 जवाब

सबसे बढ़िया उत्तर

रीडायरेक्ट के सक्रिय न होने का कारण यह है कि आपको wp_redirect के बाद बाहर निकलना होगा:

देखें codex

    function get_page_by_slug( $slug ) {
        if( $pages = get_pages() )
            foreach( $pages as $page )
                if( $slug === $page->post_name ) return true;
                return false;
   } 
   function userredirect() {
        global $post;
        if( $post->ID == 999999 ){ /* change number on this line to the post ID you want to redirect from */
            $current_user = wp_get_current_user();
            $slug = $current_user->user_login;
            if( is_user_logged_in() && is_page('Menu Page') ){
                 if( get_page_by_slug($slug) ){
                     wp_redirect('https://example.com/private-page/'.$slug.'/');
                     exit;
                }
            }
        }
    }
    add_action( 'init', 'userredirect' );
0
Jeremy 12 अगस्त 2019, 22:29

is_page('Menu Page') परिणाम के रूप में तभी सही होगा जब उपयोगकर्ता उस पृष्ठ पर क्लिक करेगा। इसलिए यदि वह किसी अन्य पृष्ठ पर है तो wp_redirect फ़ंक्शन प्रारंभ नहीं होगा। इसके अलावा आप अपने लिंक को फ़ंक्शन के साथ लपेट सकते हैं:

if get_page_by_path($current_user->user_login) {
#your_link_here
}

तो आपका लिंक तभी दिखाई देगा जब पेज मौजूद होगा

0
web-wolf 11 अगस्त 2019, 18:17