Woocommerce संबंधित उत्पादों को कैसे अनुकूलित करें? [बन्द है]


14

मेरी वेबसाइट में कोड की निम्नलिखित पंक्तियाँ हैं जो WooCommerce में मेरे एकल उत्पाद पृष्ठ के नीचे संबंधित उत्पादों को प्रदर्शित करेंगी ...

functions.php:

// display upsells and related products within dedicated div with different column and number of products
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products',20);
remove_action( 'woocommerce_after_single_product', 'woocommerce_output_related_products',10);
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);

function woocommerce_output_related_products() {
    $output = null;

    ob_start();
    woocommerce_related_products(4,4); 
    $content = ob_get_clean();
    if($content) { $output .= $content; }

    echo '<div class="clear"></div>' . $output;
}

जैसा कि यह 4 उत्पादों को प्रदर्शित करता है जिन्हें समान नाम के तहत वर्गीकृत किया गया है, मैं संबंधित टैग प्रदर्शित करने के लिए उपरोक्त को कैसे संशोधित करूंगा ?

उदाहरण के लिए, मेरे पास 'ऑटोमोटिव' नामक एक उत्पाद श्रेणी है और इस श्रेणी के भीतर, कुछ टैग हैं - 'होल्डन', 'फोर्ड', 'टोयोटा', ​​'निसान' आदि।

मैं यह चाहूंगा कि जिस उत्पाद को उपयोगकर्ता देख रहा है, उसके टैग से संबंधित सबसे नीचे 4 उत्पाद प्रदर्शित हों।

जवाबों:


29

सबसे पहले , आप अपने द्वारा अपने प्रश्न में दिखाए गए कोड के साथ वर्णित लक्ष्य को तुरंत प्राप्त नहीं कर सकते। यह समझने के लिए कि उस कोड के साथ एक सीधा दृष्टिकोण क्यों नहीं है, आपको उस चीज़ पर एक नज़र डालनी होगी जिसका आप उपयोग कर रहे हैं - woocommerce_related_products()- जो आपने अभी तक किया है।

दूसरे , आपको समझना होगा, क्योंकि अन्यथा आप ऑन पॉइंट प्रश्न नहीं पूछ पा रहे हैं, जो कि आपका लक्ष्य होना चाहिए, यह सुनिश्चित करने के लिए कि आपको उत्तर मिल रहा है। इसके अलावा आपको यह ध्यान रखना होगा कि Wordpress Development में यह वर्डप्रेस कोर से संबंधित प्रश्नों पर प्राथमिक स्कोप सेट है - यदि आप रुचि रखते हैं, तो यह वर्डप्रेस डेवलपमेंट मेटा पर चर्चा चल रही है , एक विशिष्ट विषय हमारे wooes और मंच प्लगइन्स के भविष्य पर WPSE । इसलिए, अगर आप प्लगइन्स के बारे में सवाल पूछ रहे हैं, जैसे कि woocommerce, तो आपको इसे टूटना चाहिए ताकि इसे यथासंभव मुख्य कार्य से संबंधित बना सकें - अगला बिंदु देखें - जैसा कि आप लोगों से हर प्लगइन के हर विवरण को जानने की उम्मीद नहीं कर सकते। 'का उपयोग कर रहे हैं।

तीसरा , अब एक गहन अंतर्दृष्टि में मिलता है कि क्या हो रहा है। जैसा कि आपने कहा, woocommerce_related_products()अब आप उपयोग कर रहे हैं। यदि आप उस स्रोत पर एक नज़र डालते हैं जो आप देखते हैं कि यह फ़ंक्शन टेम्पलेट woocommerce_get_template()प्राप्त करने के लिए उपयोग करता है related.phpwoocommerce_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 पर एक अच्छा जवाब खोजा ।


त्वरित और विस्तृत प्रतिक्रिया के लिए आपका बहुत बहुत धन्यवाद @ialocin। एक अस्थायी उपाय के रूप में, मैं बस बदल ORकरने के लिए ANDमेरे में wp-content/plugins/woocommerce/classes/abstract/abstract-wc-product.phpफ़ाइल और जल्द ही बदल जाएगा यह भीतर से किया जाना functions.phpफ़ाइल। फिर से धन्यवाद।
user1752759

@ user1752759 यह देखने के लिए मेरा संपादन देखेंfunctions.php
निकोलई

एकदम सही जवाब! इसका उपयोग किसी भी गाइडबुक में किया जाना चाहिए कि प्लगइन्स को कैसे समझा जाए और उन्हें अपनी आवश्यकताओं तक कैसे बढ़ाया जाए। यकीन नहीं होता कि ये किताबें मौजूद हैं .. लेकिन फिर भी :)
ThdK

@ धन्यवाद, मुझे नहीं पता कि यह कितना अच्छा है, लेकिन इसे लिखने के बाद पहली बार पढ़ने के बाद मैं अभी भी जवाब से खुश हूं, इसके अलावा मैं निश्चित रूप से तारीफ की सराहना करता हूं, यह सुनना हमेशा अच्छा लगता है :) आपने WC 2.1.x के साथ यह कोशिश की?
निकोलई

हाय वहाँ @ialocin। तल पर संपादित संस्करण कुछ समापन कोष्ठकों को याद कर रहा है, और दुर्भाग्य से, अब संस्करण 2.1.8 में समाधान के रूप में काम नहीं कर रहा है। यदि यह बहुत अधिक परेशानी नहीं है, तो क्या आप मेरे लिए इसे अपडेट कर सकते हैं?
user1752759

2

चलो यहाँ अपने आप को मूर्ख मत बनाओ। स्वीकृत उत्तर केवल उपयोगकर्ता को उसके लक्ष्य के लिए मिला।

पहली समस्या यहाँ है:

<?php
// display upsells and related products within dedicated div with different column and number of    products
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products',20);
remove_action( 'woocommerce_after_single_product', 'woocommerce_output_related_products',10);
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);

एक कार्रवाई को हटा दिया जाता है, और फिर EXACT स्थिति में रखा जाता है जिससे इसे हटा दिया गया था। लक्ष्य पूरी तरह से अस्पष्ट है।

मैं संबंधित उत्पादों पर खोज के साथ इस पर आया क्योंकि मुझे समझ नहीं आया कि TAGS और CATEGORIES क्या हैं जो woocommerce_output_related_productsइस प्लगइन में फ़ंक्शन को चलाते हैं ।

इस सवाल का सबसे अच्छा जवाब निम्न लिंक है, और woocommerce_output_related_products_args()फिल्टर के साथ सब कुछ करना है : /programming/23554993/output-posts-relating-to-the-tags


यह वास्तव में काफी मजाकिया है। आप क्यों पूछ सकते हैं, क्योंकि यदि आपने मेरे उत्तर को ध्यान से पढ़ा है, तो आपने देखा होगा, यह केवल एक फिल्टर का उपयोग करता है। उस समय उपलब्ध एकमात्र फ़िल्टर का सटीक होना, लेकिन आप जानते होंगे कि, अगर आपने वास्तव में जो मैंने लिखा था उसे पढ़ा था और विभिन्न संस्करणों के स्रोत फ़ाइलों को देखने के लिए समय लिया होगा। बस केह रहा हू। इसके अलावा, आपके द्वारा जोड़ा गया उत्तर नए हुक उपलब्ध साइन v2.1 को बहुत अच्छी तरह से समझाता है।
निकोलई

इसके बारे में क्षमा करें, यह एक रात थी। मैं ओपी द्वारा कोड में स्पष्ट दोष के बारे में थोड़ा समझाने की उम्मीद कर रहा था।
नाथन पॉवेल

कोई चिंता नहीं, लेकिन मुझे लगा कि मुझे कुछ कहना है।
निकोलई

आपका संदर्भ लिंक मेरे लिए काम किया नथन, धन्यवाद, अब 2 घंटे के लिए खुद को करने की कोशिश कर रहा था। अब मैं ठीक से फ़िल्टर लागू करना जानता हूं :)
marcovega
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.