यह कैसे जांचें कि क्या उत्पाद एकल-उत्पाद पर एक निश्चित श्रेणी में है। Woocommerce में?


25

दुनिया में कैसे मैं देख सकता हूं कि क्या एकल-उत्पाद पर कोई उत्पाद एक उत्पाद श्रेणी में है ।

<?php if (is_product_category('audio')) {
           echo 'In audio';
               woocommerce_get_template_part( 'content', 'single-product' );

      } elseif (is_product_category('elektro')) {

            echo 'In elektro';
            woocommerce_get_template_part( 'content', 'single-product' );
         } else {
            echo 'some blabla'; }  ?>

is_product_category ('स्लग') का एकल-उत्पाद पर प्रभाव नहीं होता है । मैं चाहता हूं कि ऊपरी हालत हो। एकल-उत्पाद पृष्ठ पर इसके लिए कोई समाधान?


हो सकता है क्योंकि आपका पहला बयान एक समापन याद आ रहा है )? यह होना चाहिएif (is_product_category('audio'))
स्टील्थिनंजा

अच्छी पकड़ है, लेकिन ऐसा नहीं है। is_product_category एकल-उत्पाद पर काम नहीं करता है ।php
एलेक्स

जवाबों:


28

मुझे नहीं लगता कि get_categories()इस मामले में आपके लिए सबसे अच्छा विकल्प है क्योंकि यह एंकर टैग के रूप में सूचीबद्ध सभी श्रेणियों के साथ एक स्ट्रिंग लौटाता है, प्रदर्शित करने के लिए ठीक है, लेकिन कोड में पता लगाने के लिए महान नहीं है कि श्रेणियां क्या हैं। ठीक है, तो पहली चीज जो आपको करने की ज़रूरत है वह वर्तमान पृष्ठ के लिए उत्पाद / पोस्ट ऑब्जेक्ट को हड़प लेती है यदि आपके पास पहले से नहीं है:

global $post;

तब आप उत्पाद के लिए उत्पाद श्रेणी शब्द (श्रेणियां) प्राप्त कर सकते हैं। यहां मैं श्रेणी शब्द वस्तुओं को एक साधारण सरणी में बदल रहा हूं, जिसका नाम $categoriesयह देखना आसान है कि स्लग को क्या सौंपा गया है। ध्यान दें कि यह उत्पाद को सौंपे गए सभी श्रेणियों को लौटाएगा , न कि केवल वर्तमान पृष्ठ में से एक, अर्थात यदि हम इस पर हैं /shop/audio/funzo/:

$terms = wp_get_post_terms( $post->ID, 'product_cat' );
foreach ( $terms as $term ) $categories[] = $term->slug;

फिर हमें बस यह जाँचना है कि कोई सूची सूची में है या नहीं:

if ( in_array( 'audio', $categories ) ) {  // do something

यह सब एक साथ डालें:

<?php
global $post;
$terms = wp_get_post_terms( $post->ID, 'product_cat' );
foreach ( $terms as $term ) $categories[] = $term->slug;

if ( in_array( 'audio', $categories ) ) {
  echo 'In audio';
  woocommerce_get_template_part( 'content', 'single-product' );
} elseif ( in_array( 'elektro', $categories ) ) {
  echo 'In elektro';
  woocommerce_get_template_part( 'content', 'single-product' );
} else {
  echo 'some blabla';
}

उम्मीद है कि यह वही है जो आप देख रहे थे और आपके प्रश्न का उत्तर देते हैं।


37

has_term इस मामले में काम करना चाहिए:

if ( has_term( 'audio', 'product_cat' ) ) {

       echo 'In audio';
       woocommerce_get_template_part( 'content', 'single-product' );

} elseif ( has_term( 'elektro', 'product_cat' ) ) {

       echo 'In elektro';
       woocommerce_get_template_part( 'content', 'single-product' );

} else {
       echo 'some blabla';
}

सुपर सरल और प्रभावी तरीका यह करने के लिए। मुझे लगता है कि यह बेहतर जवाब है।
ट्रेवर

मैंने इसे प्राथमिकता दी क्योंकि यह छोटा था। हालाँकि मैंने किया थाif { thing; return;}
इयोन

8

यह ध्यान देने योग्य है कि आप अपने कोड को ढेर सारे अन्य जांचों के साथ अव्यवस्थित करने के बजाय एक सरणी को कॉल करके विकल्पों की एक सूची के माध्यम से जा सकते हैं, यह मानते हुए कि आप प्रत्येक श्रेणी के साथ एक ही काम करना चाहते हैं।

if( has_term( array( 'laptop', 'fridge', 'hats', 'magic wand' ), 'product_cat' ) ) :

// Do stuff here

else :

// Do some other stuff

endif;

मुझे लगता है कि मिलानो के उत्तर के रूप में इस उत्तर को एडिटियन के रूप में जोड़ा जाना चाहिए।
साइबरमेट

4

यह पुराना है, लेकिन इस मामले में लोग अभी भी WooThemes को एक सरल उपाय के रूप में देख रहे हैं:

if ( is_product() && has_term( 'your_category', 'product_cat' ) ) {
    //do code
}

* जो भी आप उपयोग कर रहे हैं उसे 'your_category' बदलें।

यहाँ प्रलेखन के लिए लिंक है: https://docs.woothemes.com/document/remov-product-content-based-on-category/


0

मैं get_categories()WC_Product वर्ग के फ़ंक्शन का उपयोग करना चाहूंगा।

आप दस्तावेज़ के लिंक यहां पा सकते हैं ।

मूल रूप से पृष्ठ के लूप के भीतर उत्पाद से जुड़ी श्रेणियों को वापस करने के लिए फ़ंक्शन को कॉल करते हैं।


मैं यह कोड नहीं कर पा रहा हूं। मैं यह कैसे काम करने के लिए प्राप्त करने के लिए एक सुराग नहीं है। कोई तो कृपया इसका उदाहरण दें। मैंने वहां अपनी पूरी कोशिश की। क्या मुझे इसे get_categories () से बदल देना चाहिए?
एलेक्स

यदि आप उत्पाद श्रेणी पृष्ठ पर हैं, तो @Alex is_product_category () फ़ंक्शन रिटर्न TRUE है। उत्पाद की श्रेणी नहीं। मैं अभी एक प्रोजेक्ट पर नीचे हूँ, लेकिन मैं आपको बाद में एक कोड स्निपेट दिलाने की कोशिश करूँगा।
स्टीव

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