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 টি পণ্য প্রদর্শন করার সাথে সাথে সম্পর্কিত ট্যাগগুলি প্রদর্শন করার জন্য, আমি কীভাবে উপরেরটি সংশোধন করব ?

উদাহরণস্বরূপ, আমার কাছে 'মোটরগাড়ি' নামে একটি পণ্য বিভাগ রয়েছে এবং এই বিভাগের মধ্যে কয়েকটি ট্যাগ রয়েছে - 'হোল্ডেন', 'ফোর্ড', 'টয়োটা', 'নিসান' ইত্যাদি etc.

আমি এটি নীচে 4 টি পণ্য প্রদর্শন করতে চাইবে, ব্যবহারকারী বর্তমানে যে পণ্যটি দেখছেন তার ট্যাগ সম্পর্কিত।

উত্তর:


29

প্রথমত , আপনি আপনার প্রশ্নে যে কোডটি দেখান তার সাথে আপনি বর্ণিত লক্ষ্যটি অবিলম্বে অর্জন করতে পারবেন না। সেই কোডটির সাথে কেন সরাসরি পন্থা নেই তা বোঝার জন্য আপনি কী ব্যবহার করছেন তা একবার দেখে নিতে হবে woocommerce_related_products()- আপনি এখন পর্যন্ত যা করেছেন তা করতে।

দ্বিতীয়ত , আপনাকে বুঝতে হবে, কারণ অন্যথায় আপনি কোনও উত্তর পেয়ে যাচ্ছেন এমন নিশ্চয়তা দেওয়ার জন্য আপনি কোনও বিষয়বস্তু প্রশ্ন করতে সক্ষম নন, যা একেবারে আপনার লক্ষ্য হওয়া উচিত। এ ছাড়া আপনার মনে রাখতে হবে যে ওয়ার্ডপ্রেস বিকাশের প্রাথমিক শব্দটি ওয়ার্ডপ্রেস সম্পর্কিত সম্পর্কিত প্রশ্নগুলির উপর ভিত্তি করে রয়েছে - যদি আপনি আগ্রহী হন তবে এটি ওয়ার্ডপ্রেস ডেভেলপমেন্ট মেটা নিয়ে আলোচনার অধীনে রয়েছে , একটি নির্দিষ্ট বিষয় হ'ল ডাব্লুপিএসইতে প্লাটিন প্লাগইনগুলির আমাদের উওস এবং ভবিষ্যত । সুতরাং, যদি আপনি ওয়ার্ককমার্সের মতো প্লাগইনগুলি সম্পর্কে প্রশ্ন জিজ্ঞাসা করছেন তবে এটি এটিকে যথাসম্ভব মূল ফাংশনগুলির সাথে সম্পর্কিত করার জন্য আপনার এটি ভেঙে দেওয়া উচিত - পরবর্তী পয়েন্টটি দেখুন - আপনি প্রতিটি প্লাগইনটির প্রতিটি বিবরণ লোকেরা জানতে পারবেন বলে আপনি আশা করতে পারবেন না ব্যবহার করছি।

তৃতীয়ত , এখন কী ঘটছে গভীরতর অন্তর্দৃষ্টি। যেমনটি আপনি বলেছেন, আপনি woocommerce_related_products()এখন ব্যবহার করছেন। আপনি যদি উত্সটি একবার দেখে থাকেন তবে আপনি দেখতে পাবেন যে এই ফাংশনটি টেমপ্লেটটি woocommerce_get_template()পেতে ব্যবহার করে related.phpwoocommerce_get_template()আবার woocommerce_locate_template()টেমপ্লেট সনাক্ত করতে ব্যবহার করে, পরবর্তীকৃত ওয়ার্ডপ্রেস কোর ফাংশনটি ব্যবহার করে এটি করছে locate_template()
এখন মূল সাথে একটি সংযোগ রয়েছে, যা উপরোক্ত উল্লিখিত - এবং আশাবাদী পরিদর্শন করা হয়েছে - ওয়ার্ক কমার্স ফাংশনগুলি মূল কার্যকারিতা বাড়ানোর জন্য আবশ্যকভাবে মোড়কে দেয়। কার্যকারিতা নির্ভরতা বিশ্লেষণ করে আরও একটি বিষয় স্পষ্ট হয়ে উঠল যা হ'ল আমি যা বলেছিলাম, আপনার লক্ষ্য অর্জনের জন্য আপনার আলাদা পদ্ধতির প্রয়োজন, কারণ 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_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 সংস্করণ ২.১.০ এবং উপরের দিকের উপরের হুকটি কাজ করবে না, কারণ এটির আর অস্তিত্ব নেই, সুতরাং উত্তর ২.০.২০ পর্যন্ত উত্তর ব্যবহারযোগ্য। তবে @ নাথানপোয়েল স্ট্যাকওভারফ্লোতে উপলভ্য v2.1.0 থেকে এবং সম্পর্কিত পণ্যগুলি হুকের ব্যবহারযোগ্য সেটকে কাস্টমাইজ করার জন্য একটি চমৎকার উত্তর আবিষ্কার করেছেন ।


দ্রুত এবং বিস্তারিত প্রতিক্রিয়ার জন্য আপনাকে অনেক ধন্যবাদ @ আইলোকিন। একটি অস্থায়ী পরিমাপ হিসেবে আমি কেবল পরিবর্তিত ORকরতে ANDআমার মধ্যে wp-content/plugins/woocommerce/classes/abstract/abstract-wc-product.phpফাইল এবং শীঘ্রই পরিবর্তন হবে এই মধ্যে থেকে কাজ করতে হবে functions.phpফাইল। আবার আপনাকে ধন্যবাদ.
ব্যবহারকারী1752759

@ ব্যবহারকারী1752759 এর মাধ্যমে এটি করতে আমার সম্পাদনা দেখুনfunctions.php
নিকোলাই

নিখুঁত উত্তর! এটি প্লাগইনগুলি কীভাবে বুঝতে হয় এবং কীভাবে সেগুলি আপনার প্রয়োজনগুলিতে প্রসারিত করা যায় সে সম্পর্কে কোনও গাইড বইতে ব্যবহার করা উচিত। নিশ্চিত না যে এই বইগুলি বিদ্যমান থাকলেও .. তবে এখনও :)
ThdK

@ টিএইচডিকে ধন্যবাদ, আমি জানি না যে এটি খুব ভাল কিনা, তবে এটি লেখার পর প্রথমবারের পরে আমি উত্তরটি নিয়ে এখনও খুশি, তাছাড়া আমি অবশ্যই প্রশংসার প্রশংসা করি, শুনতে শুনতে এটি সবসময়ই সুন্দর :) আপনি WC 2.1.x দিয়ে চেষ্টা করেছেন?
নিকোলাই

হাই, @ialocin। নীচে সম্পাদিত সংস্করণটি কয়েকটি বন্ধ হওয়া বন্ধনী অনুপস্থিত এবং দুর্ভাগ্যক্রমে, সংস্করণ ২.১.৮ এ সমাধান হিসাবে আর কাজ করছে না। যদি ঝামেলা খুব বেশি না হয়, আপনি কি দয়া করে আমার জন্য এটি আপডেট করতে পারেন?
ব্যবহারকারী 1752759

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);

একটি ক্রিয়া সরানো হয়েছে, এবং তারপরে একে একে সরিয়ে নেওয়া হয়েছে ঠিক অবস্থানে। লক্ষ্যটি সম্পূর্ণ অস্পষ্ট।

আমি সম্পর্কিত পণ্যগুলির সন্ধানের সাথে এটি পেরিয়ে এসেছি কারণ আমি বুঝতে পারি নি যে woocommerce_output_related_productsএই প্লাগইনটিতে ট্যাগগুলি এবং ক্যাটাগরিগুলি ফাংশনটি চালিত করে ।

এই প্রশ্নের সর্বোত্তম উত্তরটি হ'ল নিম্নলিখিত লিঙ্কটি, এবং woocommerce_output_related_products_args()ফিল্টারটির সাথে সবকিছু করার রয়েছে : /programming/23554993/output-posts-relating-to-tag-tags


এটি আসলে বেশ মজার। আপনি কেন জিজ্ঞাসা করতে পারেন, কারণ আপনি যদি আমার উত্তরটি মনোযোগ সহকারে পড়ে থাকেন তবে আপনি দেখতে পাবেন, এটিতে কেবলমাত্র একটি ফিল্টার ব্যবহার করা হয়েছে। সেই সময়ে উপলব্ধ একমাত্র ফিল্টারটি সঠিক হওয়ার জন্য, তবে আপনি এটি জানতেন, আপনি যদি আমি যা লিখেছিলাম তা যদি আপনি পড়ে থাকেন এবং বিভিন্ন সংস্করণের উত্স ফাইলগুলি দেখার জন্য সময় নিতেন। এমনি বলছি. এ ছাড়াও, আপনি যে উত্তরটি যুক্ত করেছেন সেগুলি খুব ভালভাবে নতুন ভিউ উপলব্ধ সাইন ভি 2.1 ব্যাখ্যা করবে।
নিকোলাই

দুঃখিত, এটি গভীর রাত ছিল। আমি ওপি দ্বারা কোডের সুস্পষ্ট ত্রুটি সম্পর্কে কিছুটা ব্যাখ্যা করার আশা করছিলাম।
নাথান পাওয়েল

কোনও উদ্বেগ নেই, তবে অনুভব করলাম যদিও আমাকে কিছু বলতে হবে।
নিকোলাই

আপনার রেফারেন্স লিঙ্কটি আমার জন্য কাজ করেছে নাথান, ধন্যবাদ, এখন আমার নিজের জন্য এটি 2 ঘন্টা করার চেষ্টা করা হয়েছে। এখন আমি ফিল্টারগুলি সঠিকভাবে প্রয়োগ করতে জানি :)
মার্কোভেগা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.