WooCommerce पृष्ठों को केवल उपयोगकर्ताओं के लिए लॉग इन के लिए सुलभ बनाएं


12

मेरे पास वर्डप्रेस का उपयोग करने वाली एक वेबसाइट है, और WooCommerce का उपयोग करके एक ई-कॉमर्स है। मैं अपनी दुकान (और उसके सभी पृष्ठों) को केवल उपयोगकर्ताओं में लॉग इन करके देखना चाहूंगा।

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

यदि वे WooCommerce पृष्ठ तक पहुंचने का प्रयास करते हैं, तो मैं उन उपयोगकर्ताओं को कैसे पुनर्निर्देशित कर सकता हूं, जो दूसरे पृष्ठ पर लॉग इन नहीं हैं?

जवाबों:


24

इसे अपनी functions.phpफ़ाइल में रखें :

function wpse_131562_redirect() {
    if (
        ! is_user_logged_in()
        && (is_woocommerce() || is_cart() || is_checkout())
    ) {
        // feel free to customize the following line to suit your needs
        wp_redirect(home_url());
        exit;
    }
}
add_action('template_redirect', 'wpse_131562_redirect');

यह क्या करता है?
हम जांचते हैं कि कोई लॉग-इन उपयोगकर्ता WooCommerce पेज देखना चाहता है या नहीं, और उसे अपने होम पेज पर रीडायरेक्ट करता है।


आपके सहयोग के लिए धन्यवाद। फ़ाइल कार्य। Php मेरे विषय फ़ोल्डर में है ?? और मैं उत्पाद पृष्ठ से इस फ़ंक्शन को कैसे याद कर सकता हूं? धन्यवाद :-)
एलेसेंड्रो

आपका बहुत बहुत धन्यवाद। आपका कोड मेरे लिए ठीक काम करता है। बहुत बहुत धन्यवाद :)
एलेसांद्रो

1
सुनिश्चित करें कि आपने किसी भी woocommerce पृष्ठ को अपने मुखपृष्ठ के रूप में सेट नहीं किया है, क्योंकि तब साइट अब काम नहीं करेगी।
एसपीआरबीआरएन

7

मैंने अभी पुनर्निर्देशन को बदल दिया है

wp_redirect( site_url('my-account/') )

यदि लॉग इन या पंजीकृत नहीं हैं, तो उपयोगकर्ता "मेरा खाता" पृष्ठ पर पुनर्निर्देशित किए जाते हैं।


2
यह My Accountपृष्ठ पर पुनर्निर्देशित करने का सबसे अच्छा तरीका नहीं है । मेरे खाता पृष्ठ के उस पारगमन को पुनः प्राप्त करना बेहतर है जिसे आपने अपनी WooCommerce सेटिंग्स में जोड़ा था। इस तरह जब भी पर्मलिंक बदला जाता है या आपके पास पर्मालिंक चलाने वाली एक बहु-भाषा साइट होती है, तब भी उसे सही ढंग से पुनर्प्राप्त किया जाएगा। संक्षेप में: यह हार्डकोड पर्मलिंक / स्लग (या सामान्य रूप से URL का) के लिए बेहतर नहीं है। एक बेहतर तरीका होगा:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
रेंस टिलमैन

आप कोड गायब हैं; यह समाप्त होता है
user889030

0

मैं इसे बदलूंगा

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

के बजाय

wp_redirect( site_url('my-account/') );

2
क्या आप यह बता सकते हैं कि यह मदद क्यों करेगा, इसलिए अन्य लोग आपके उत्तर से कुछ सीख सकते हैं?
Krzysiek Dróżdż
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.