सबसे पहले , आप अपने द्वारा अपने प्रश्न में दिखाए गए कोड के साथ वर्णित लक्ष्य को तुरंत प्राप्त नहीं कर सकते। यह समझने के लिए कि उस कोड के साथ एक सीधा दृष्टिकोण क्यों नहीं है, आपको उस चीज़ पर एक नज़र डालनी होगी जिसका आप उपयोग कर रहे हैं - woocommerce_related_products()
- जो आपने अभी तक किया है।
दूसरे , आपको समझना होगा, क्योंकि अन्यथा आप ऑन पॉइंट प्रश्न नहीं पूछ पा रहे हैं, जो कि आपका लक्ष्य होना चाहिए, यह सुनिश्चित करने के लिए कि आपको उत्तर मिल रहा है। इसके अलावा आपको यह ध्यान रखना होगा कि Wordpress Development में यह वर्डप्रेस कोर से संबंधित प्रश्नों पर प्राथमिक स्कोप सेट है - यदि आप रुचि रखते हैं, तो यह वर्डप्रेस डेवलपमेंट मेटा पर चर्चा चल रही है , एक विशिष्ट विषय हमारे wooes और मंच प्लगइन्स के भविष्य पर WPSE । इसलिए, अगर आप प्लगइन्स के बारे में सवाल पूछ रहे हैं, जैसे कि woocommerce, तो आपको इसे टूटना चाहिए ताकि इसे यथासंभव मुख्य कार्य से संबंधित बना सकें - अगला बिंदु देखें - जैसा कि आप लोगों से हर प्लगइन के हर विवरण को जानने की उम्मीद नहीं कर सकते। 'का उपयोग कर रहे हैं।
तीसरा , अब एक गहन अंतर्दृष्टि में मिलता है कि क्या हो रहा है। जैसा कि आपने कहा, woocommerce_related_products()
अब आप उपयोग कर रहे हैं। यदि आप उस स्रोत पर एक नज़र डालते हैं जो आप देखते हैं कि यह फ़ंक्शन टेम्पलेट woocommerce_get_template()
प्राप्त करने के लिए उपयोग करता है related.php
। woocommerce_get_template()
फिर woocommerce_locate_template()
से टेम्पलेट का पता लगाने के लिए उपयोग करता है, बाद में वर्डप्रेस कोर फ़ंक्शन का उपयोग करके ऐसा कर रहा है locate_template()
।
अब कोर से कनेक्शन वापस आ गया है, जिससे यह एहसास होता है कि उपरोक्त - और उम्मीद के मुताबिक निरीक्षण किया गया है - कोर कार्यक्षमता को बढ़ाने के लिए woocommerce फ़ंक्शन अनिवार्य रूप से रैपर हैं। कार्यक्षमता निर्भरता का विश्लेषण करके एक और बात जो स्पष्ट हो गई है, जो मैंने पहले कहा था, आपको अपने लक्ष्य को प्राप्त करने के लिए एक अलग दृष्टिकोण की आवश्यकता है, क्योंकि woocommerce_related_products()
- अब निर्विवाद स्पष्ट - सही नहीं है।
यदि आपने मेरे स्पष्टीकरणों का पालन किया है और अब तक पूरी तरह से पढ़ चुके हैं, तो आपने महसूस किया कि related.php
इसमें वही है जो आप खोज रहे हैं। मैं विशेष रूप से get_related()
फ़ंक्शन के बारे में बात कर रहा हूं , जिसमें woocommerce_product_related_posts
हुक शामिल है और कोर फ़ंक्शन का उपयोग करता है wp_get_post_terms()
और get_posts()
- get_related()
आईडी का एक सेट प्राप्त करने के लिए उपयोग किया जाता है। इसके अतिरिक्त woocommerce_related_products_args
हुक है, जिसका उपयोग संबंधित उत्पादों के तर्कों को अंदर बदलने के लिए किया जा सकता है related.php
, इसके लिए WP_Query
इसका उपयोग किया जाता है। क्वेरी get_related()
कॉल से परिणामी आईडी का उपयोग करती है ।
मुझे लगता है कि आपको अपनी समस्या को हल करने के लिए हाथ पर सब कुछ मिल गया है। वास्तव में इससे कहीं अधिक है, यह संबंधित उत्पादों को कैसे अनुकूलित किया जाए, इस पर लगभग पूर्ण अवलोकन देता है। मैंने हर कार्यक्षमता का उल्लेख नहीं किया - फ़ंक्शन और / या हुक - आउट ऑफ सोर्स कोड का निरीक्षण किया, लेकिन निश्चित रूप से सभी महत्वपूर्ण हैं। अब यह स्पष्ट होना चाहिए कि woocommerce की संबंधित उत्पादों की कार्यक्षमता को मूल कार्यों में कैसे वापस लाया जा सकता है।
चौथा , मैं आपके पास आता हूं, जहां आपको अपने अनुकूलन को लागू करना चाहिए और आपको क्या मांगना चाहिए। इस तरह के उदाहरण के लिए:
Woocommerce के पास संबंधित उत्पादों को निर्धारित करने के woocommerce_product_related_posts
लिए get_posts()
कॉल को अनुकूलित करने के लिए हुक है ।
कोड:
// Get the posts
$related_posts = get_posts( apply_filters('woocommerce_product_related_posts', array(
'orderby' => 'rand',
'posts_per_page' => $limit,
'post_type' => 'product',
'fields' => 'ids',
'meta_query' => $meta_query,
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats_array
),
array(
'taxonomy' => 'product_tag',
'field' => 'id',
'terms' => $tags_array
)
)
) ) );
मैं अपने लक्ष्य को प्राप्त करने के लिए इसे कैसे अनुकूलित कर सकता हूं? जो संबंधित उत्पादों को दिखाने के लिए है जो एक ही उत्पाद श्रेणी में हैं product_cat
- और एक ही टैग (एस) - product_tag
- जैसे एकल उत्पाद दिखाए गए हैं।
कम से कम नहीं है, तो आप पूर्ण और तैयार कोड प्राप्त करने के उम्मीद थी - - यदि आप एक समापन दिए बिना जवाब है, पहली बात तो आप शायद करना चाहिए बदल रहा है tax_query
पैरामीटर relation
से OR
करने के लिए AND
।
टिप्पणियाँ:
- मैंने इसे ऊपर वर्णित चल रही चर्चा को ध्यान में रखते हुए एक लंबे समय तक वर्णनात्मक उत्तर दिया
- मुझे आशा है कि आप बुरा नहीं मानेंगे, कि यह न केवल आपके प्रश्न का उत्तर है, बल्कि इसके अलावा एक सामान्य शैक्षिक उद्देश्य को पूरा करने के लिए भी है
- यह अनुपलब्ध है , क्योंकि कोई वास्तविक तैयार कोड नहीं है
- अंतिम लेकिन कम से कम, यह ध्यान देने योग्य है कि woocoomerce 2.1 की रिहाई के साथ कुछ महत्वपूर्ण कोड परिवर्तन लागू किए जाएंगे, यह ध्यान में रखते हुए, लेकिन अब 2.0.19 के लिए उपरोक्त कोड मान्य है
संपादित करें:
आपको वास्तव में (प्लगइन) कोर कक्षाओं को सीधे संपादित नहीं करना चाहिए। यह समस्याग्रस्त है, क्योंकि आपको अपडेट पर अपने परिवर्तनों को फिर से बनाए रखना है, क्योंकि यदि आप एक प्रदर्शन करते हैं, तो कोर फाइलें अपडेट हो जाती हैं और ओवरराइट हो जाती हैं। विशेष रूप से यदि यह इस मामले में आसानी से परिहार्य है, तो नीचे दिए गए कोड का मतलब है कि आप वैसे भी क्या करना चाहते हैं, जो कि आपके माध्यम से इस बदलाव को लागू कर रहा है functions.php
।
कोड:
add_filter( 'woocommerce_product_related_posts',
'wpse_123436_change_wc_related_products_relation_to_and' );
function wpse_123436_change_wc_related_products_relation_to_and() {
$get_related_products_args = array(
'orderby' => 'rand',
'posts_per_page' => $limit,
'post_type' => 'product',
'fields' => 'ids',
'meta_query' => $meta_query,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats_array
),
array(
'taxonomy' => 'product_tag',
'field' => 'id',
'terms' => $tags_array
)
)
);
return $get_related_products_args;
}
WooCommerce संस्करण 2.1.0 और इसके बाद के संस्करण के ऊपर का हुक काम नहीं करेगा, क्योंकि यह अब मौजूद नहीं है, इसलिए उत्तर 2.0.20 तक उपयोगी है। लेकिन @NathanPowell ने उपलब्ध पर और संबंधित उत्पादों के अनुकूलन के लिए हुक के सेट से v2.1.0 के बारे में StackOverflow पर एक अच्छा जवाब खोजा ।
OR
करने के लिएAND
मेरे मेंwp-content/plugins/woocommerce/classes/abstract/abstract-wc-product.php
फ़ाइल और जल्द ही बदल जाएगा यह भीतर से किया जानाfunctions.php
फ़ाइल। फिर से धन्यवाद।