किसी विशिष्ट पृष्ठ पर उपयोगकर्ताओं में गैर-लॉग इन को पुनर्निर्देशित कैसे करें?


16

किसी विशिष्ट पृष्ठ / URL के लिए किसी अन्य पृष्ठ / URL के लिए अनुरोध करने वाले गैर-लॉग इन उपयोगकर्ताओं को कैसे पुनर्निर्देशित करें और "केवल सदस्यों के लिए" जैसे संदेश प्रदर्शित करें। मुझे पता है कि कोड का उपयोग करना काफी आसान है! Is_user_logged_in () फ़ंक्शन लेकिन मुझे नहीं पता कि इसे कैसे कोड करना है क्योंकि मैं वर्डप्रेस के लिए एक नौसिखिया हूं। मुझे कोड डालने के लिए फाइल बताने की भी परवाह है।

जवाबों:


30

यहां 2 उदाहरण दिए गए हैं जिन्हें आपको अपनी विशिष्ट आवश्यकताओं के लिए काम करने के लिए थोड़ा संशोधित करना होगा।

add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' );

function redirect_non_logged_users_to_specific_page() {

if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {

wp_redirect( 'http://www.example.dev/page/' ); 
    exit;
   }
}

इसे अपनी चाइल्ड थीम फ़ंक्शंस फ़ाइल में डालें, पेज आईडी या स्लग और रीडायरेक्ट यूआरएल बदलें।

आप इस तरह कोड का उपयोग भी कर सकते हैं:

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

if ( is_page('slug') && ! is_user_logged_in() ) {

wp_redirect( 'http://www.example.dev/your-page/', 301 ); 
  exit;
    }
}

आप संदेश को सीधे पेज पर जोड़ सकते हैं या यदि आप सभी गैर लॉग इन उपयोगकर्ताओं के लिए संदेश प्रदर्शित करना चाहते हैं, तो इसे कोड में जोड़ें

http://codex.wordpress.org/Function_Reference/wp_redirect


आपके उत्तर के लिए धन्यवाद, मुझे यह पसंद आया add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }लेकिन काम नहीं कर रहा है
user3187719

यहाँ पेज आईडी या स्लग का प्रयोग करें, url mydomain.com/participate codex.wordpress.org/Conditional_Tags
ब्रैड डाल्टन

is_page ('भाग')
ब्रैड डाल्टन

9

यह बेहतर होगा:

if ( !is_user_logged_in() ) {
    auth_redirect();
} 

// continue as normal for authenticated users

यह क्या करता है उपयोगकर्ता को लॉगिन पृष्ठ पर पुनर्निर्देशित करता है। एक बार लॉग इन करने के बाद, उपयोगकर्ता उस सुरक्षित पेज पर वापस आ जाता है जिसे वे शुरू में एक्सेस करने का प्रयास कर रहे थे।

यहाँ प्रलेखन:

https://codex.wordpress.org/Function_Reference/auth_redirect


4

हम आपको यह कैसे बता सकते हैं कि अगर आपने हमें यह नहीं बताया कि आप इसे कहाँ और कहाँ प्रदर्शित करना चाहते हैं? पूरे पद? पेज? पृष्ठों के कस्टम भाग? क्षमा करें ... मुझे लगता है कि मेरी क्रिस्टल बॉल आज काफी काम नहीं कर रही है।

चूंकि आप हैं, और मैं आपको उद्धृत करता हूं: "एक नौसिखिया से वर्डप्रेस" आपको सीधे जवाब मांगने के बजाय सीखना चाहिए।

के रूप में जहां आप संदर्भ 1 लिंक पढ़ना चाहिए। यह आपको बताएगा कि आपको इसे किस फ़ाइल में डालना है।

के रूप में कैसे यह करने के लिए आपको सबसे पहले संदर्भ लिंक 2 और 3 को पढ़ना चाहिए।

कुल मिलाकर यह कुछ इस तरह दिखना चाहिए:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'For members only';
}

बेशक उपरोक्त कोड को लूप में जाने की आवश्यकता है । आप इसे जटिल या जितना चाहें उतना सरल बना सकते हैं। सरल पाठ के बजाय उदाहरण के लिए यदि आप लॉग इन नहीं हैं, उदाहरण के लिए पूरे साइन अप फॉर्म को प्रदर्शित कर सकते हैं या - जैसा कि मैं सुझाता हूं - एक विभाजित स्क्रीन जहां उपयोगकर्ता लॉग इन कर सकता है (चूंकि उपयोगकर्ता का खाता हो सकता है लेकिन साइन इन करना भूल गया है) या साइन अप करें (अगर वह एक नहीं है)।

  1. खाका पदानुक्रम
  2. सशर्त टैग
  3. सूचित करते रहना

नीचे टिप्पणी के बाद जोड़ा गया:

headerसाथ wp_login_urlफिर से उपयोग करने के लिए - फिर से, संदर्भ 1 और 2 नीचे देखें:

if ( is_user_logged_in() ) {
    the_content();
} else {
    header('Location: ' . wp_login_url());
}

संदर्भ:

  1. हेडर - PHP
  2. wp_login_url

वास्तव में मैं वर्डप्रेस पर फ़न्टक्शन को नहीं जानता जो अनुरोधित URL या पर्मलिंक देता है। और फैलाव संदेश के बारे में, इसे छोड़ दें, मैं बस उन्हें लॉग इन किए बिना कुछ URL के लिए अनुरोध करने पर पुनर्निर्देशित करना चाहता हूं।
user3187719

क्या मैं इसे $ pagenow के साथ कर सकता हूँ?
user3187719

@ user3187719 ने मेरे मूल उत्तर को संपादित किया और समाधान को पुनर्निर्देशित किया। पुनश्च। $pagenow? आप एक तोप के साथ एक मक्खी को मारने की कोशिश कर रहे हैं सुनिश्चित करें कि यह काम करेगा, लेकिन इतना जटिल क्यों? इसे सरल रखें। PS2: जानें PHP और WP Codex।
बोरक

4

आप किसी विशिष्ट पृष्ठ पर पुनर्निर्देशित नहीं कर सकते, लेकिन प्रत्येक गैर-लॉग-इन उपयोगकर्ता को लॉग-इन स्क्रीन पर पुनर्निर्देशित किया जाएगा।

<?php auth_redirect(); ?>

Wordpress संदर्भ: auth_redirect()

बस एक और उपाय का उल्लेख करना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.