मेरे पास एक सदस्यता साइट है और उपयोगकर्ता के लॉग इन होने तक कीमतों को छिपाने की आवश्यकता है। मैं इसे कैसे समायोजित कर सकता हूं ताकि कीमतें केवल उन उपयोगकर्ताओं के लिए छिपी रहें जो लॉग इन नहीं हैं?

.imagemapper-wrapper .my_product_price { display:none !important; }

वर्तमान में कीमतें सभी से छिपी हुई हैं।

1
Tamara Delaney 26 मार्च 2020, 23:40
यहां दो उत्तर हैं, लेकिन मैं स्पष्ट करना चाहता हूं: यदि उपयोगकर्ता है लॉग इन है तो आप कीमतों को छिपाना चाहते हैं?
 – 
disinfor
26 मार्च 2020, 23:51
अगर लॉग इन नहीं किया है तो मैं केवल कीमतों को छिपाना चाहता हूं। यह एक सदस्यता की दुकान है।
 – 
Tamara Delaney
28 मार्च 2020, 02:09
मैंने आपके प्रश्न की सामग्री को और अधिक स्पष्ट करने के लिए समायोजित किया है। मैं जैक रॉबसन के उत्तर को स्वीकृत के रूप में चिह्नित करूंगा, क्योंकि यह WC logged-in बॉडी क्लास पर निर्भर करता है और यह सबसे सरल है। मेरा उत्तर और मिकरोजस का उत्तर भी काम करता है, लेकिन अधिक भारी और अनावश्यक है।
 – 
disinfor
28 मार्च 2020, 20:27

4 जवाब

सीएसएस एकमात्र विकल्प:

    .imagemapper-wrapper .my_product_price {
      display: none;
    }

    .logged-in .imagemapper-wrapper .my_product_price {
      display: inherit;
    }
3
Jack Robson 27 मार्च 2020, 00:56
1
और भी बेहतर क्योंकि WP पहले से ही .logged-in वर्ग जोड़ता है! कभी-कभी हम चीजों के बारे में ज्यादा सोच लेते हैं। +1
 – 
disinfor
27 मार्च 2020, 00:58
अच्छा! जाने का यह रास्ता है।
 – 
mikerojas
27 मार्च 2020, 03:33

ऐसा करने का एक तरीका है wp_head हुक। यदि कोई उपयोगकर्ता is_user_logged_in() से लॉग इन है, तो हुक में आप शैली को प्रतिध्वनित कर सकते हैं। निचे देखो:

<?php

// functions.php

add_action('wp_head', function(){
    if (is_user_logged_in()) {
        echo '<style>.imagemapper-wrapper .my_product_price { display:none !important; }</style>';
    }
});

एक अन्य विकल्प कस्टम सीएसएस वर्गनाम का उपयोग करना है:

// functions.php
add_filter('body_class', function($classlist) {
    // add custom css class to body element if user is logged in
    if (is_user_logged_in()) {
        $classlist[] = 'user-is-loggedin';
    }

    return $classlist;
});

फिर क्या आपका सीएसएस नए वर्गनाम का उपयोग करता है:

// your-stylesheet.css
.imagemapper-wrapper .my_product_price { display:none; }
.user-is-loggedin .imagemapper-wrapper .my_product_price { display:block !important; }
2
mikerojas 26 मार्च 2020, 23:51
बॉडी क्लास पर भी अच्छा कॉल!
 – 
disinfor
26 मार्च 2020, 23:51

यदि आप उपयोगकर्ता के लॉग इन होने तक मूल्य-निर्धारण को हटाने के बजाय CSS का उपयोग करना चाहते हैं, तो wp_head फ़िल्टर का उपयोग करें। इसे अपनी functions.php फ़ाइल में रखें:

  add_action('wp_head', static function() {
        if ( ! is_user_logged_in() ) {
         echo "<style>.imagemapper-wrapper .my_product_price { display:none !important;}</style>";
        }
   }

यह परीक्षण करने के लिए is_user_logged_in() फ़ंक्शन का उपयोग करता है कि उपयोगकर्ता लॉग इन है या नहीं। यदि उपयोगकर्ता लॉग इन नहीं है, तो इस शैली को अपने हेडर में प्रिंट करें।

1
disinfor 26 मार्च 2020, 23:49

इसलिए मैंने दो उत्तरों को एक साथ मिला दिया। डिस्प्ले: इनहेरिट काम नहीं कर रहा था इसलिए मैंने इसके बजाय ब्लॉक! महत्वपूर्ण की कोशिश की और यह एक आकर्षण की तरह काम किया। आपकी सलाह और सुझावों के लिए आप सभी का धन्यवाद। जब कोई उपयोगकर्ता लॉग इन नहीं होता है और जब वे होते हैं तो मैं कीमतों को छिपाने और कार्ट बटन में जोड़ने में सक्षम होता हूं! जब मुझे आखिरकार यह काम मिल गया तो मैं बहुत उत्साहित था। आप सभी को धन्यवाद!

#mega_main_menu>.menu_holder>.menu_inner>ul>li.default_dropdown .mega_dropdown>li>.item_link {height:auto}

.logged-in .imagemapper-wrapper .my_product_price {
      display: block !important;
    }

.imagemapper-wrapper .my_product_price { display:none !important; }

.logged-in .imagemapper-wrapper .my_add_item { display:block !important; }

.imagemapper-wrapper .my_add_item { display:none !important; }

.logged-in .my_product_footer .my_view_item {width: 50%}

.my_product_footer .my_view_item {width: 100%}
0
Tamara Delaney 30 मार्च 2020, 16:01