এখানে ইস্যুতে কিছু চিন্তাভাবনা রয়েছে, তবে দয়া করে নোট করুন যে এটি কোনওভাবেই একটি চূড়ান্ত উত্তর নয় কারণ আমি কিছু বিষয় অগ্রাহ্য করে থাকতে পারি তবে এটি আপনাকে সম্ভাব্য গোচাতে একটি অন্তর্দৃষ্টি দেবে।
হ্যাঁ, প্রযুক্তিগতভাবে এর পরিণতি হতে পারে।
কোথায় কলিং wp_defer_term_counting(true)
সত্যিই উপকারী হয়ে যখন দৃষ্টান্তস্বরূপ, আপনি কি পোস্টের ডাটাবেসের সাথে একটি গণ সন্নিবেশ সম্পাদন করা হয় এবং প্রক্রিয়ার অঙ্গ হিসাবে প্রতিটি বস্তু পদ নির্ধারিত হয়।
এই ক্ষেত্রে আপনি নিম্নলিখিত করতে হবে:
wp_defer_term_counting(true); //defer counting terms
//mass insertion or posts and assignment of terms here
wp_defer_term_counting(false); //count terms after completing business logic
এখন আপনার ক্ষেত্রে, আপনি যদি একবারে কেবল একটি পদ সন্নিবেশ করিয়ে থাকেন তবে স্থগিত মেয়াদ গণনা এখনও আপনার উপকারে আসবে তবে wp_defer_term_counting(false)
আপনার অপারেশন আপনাকে এবং আপনার সাথে বা অন্য পক্ষগুলি অনুরোধের সাথে জড়িত থাকার অনুরোধটি ছেড়ে দিতে পারে যদি আপনি নির্ভর করেন তবে শর্তাধীন বা অন্য কোনও লজিক / প্রসেসিংয়ের জন্য মেয়াদ গণনা।
আরও ব্যাখ্যা করতে, আসুন আপনাকে নীচের কাজগুলি বলুন:
ধরুন আমাদের বলা একটি শ্রমশাসনের মধ্যে 3 টি পদ রয়েছে product_cat
, এই শর্তগুলির জন্য আইডিগুলি যথাক্রমে 1 (পদটির নাম এ), 2 (পদটির নাম বি) এবং 3 (পদটির নাম সি)।
উপরের প্রতিটি পদটির ইতিমধ্যে একটি পদ গণনা রয়েছে 5
(কেবল উদাহরণ হিসাবে)।
তাহলে এটি ঘটে ...
wp_defer_term_counting(true); //defer counting terms
$post_id = wp_insert_post($data);
wp_set_object_terms($post_id, array(1, 2, 3), 'product_cat');
তারপরে আপনার যুক্তিতে আপনি এই শব্দটি আনার সিদ্ধান্ত নিয়েছেন কারণ আপনি সেই পদটির সাথে যুক্ত অবজেক্টের পরিমাণ নির্ধারণ করতে এবং ফলাফলের ভিত্তিতে কিছু অন্যান্য ক্রিয়া সম্পাদন করতে চান।
সুতরাং আপনি এই ...
$terms = get_the_terms($post_id, 'product_cat');
//let's just grab the first term object off the array of returned results
//for the sake of this example $terms[0] relates to term_id 1 (A)
echo $terms[0]->count; //result 5
//dump output of $terms above
array (
0 =>
WP_Term::__set_state(array(
'term_id' => 1,
'name' => 'A',
'slug' => 'a',
'term_group' => 0,
'term_taxonomy_id' => 1,
'taxonomy' => 'product_cat',
'description' => '',
'parent' => 0,
'count' => 5, //notice term count still equal to 5 instead of 6
'filter' => 'raw',
)),
)
আমাদের উদাহরণের ক্ষেত্রে আমরা বলেছিলাম যে শব্দের নাম এ (টার্ম_আইডি 1) এর সাথে ইতিমধ্যে 5 টি অবজেক্ট যুক্ত রয়েছে, অন্যের ওয়ার্ডে ইতিমধ্যে 5 এর একটি শব্দ গণনা রয়েছে।
সুতরাং আমরা প্রত্যাশা করব যে count
উপরের জিনিসটির উপরের প্যারামিটারটি 6 হবে তবে আপনি যদি wp_defer_term_counting(false)
অপারেশন করার পরে কল করেননি , তবে শর্তাবলী প্রযোজ্য শর্তগুলির জন্য আপডেট করা হয়নি (শব্দ A, B বা C))
সুতরাং এটি আপনার অপারেশনের পরে কল না করে কল করার ফলাফল ।wp_defer_term_counting(true)
wp_defer_term_counting(false)
এখন প্রশ্ন অবশ্যই, আপনি কি এই প্রভাব ফেলবেন? আপনি যদি অন্য কোনও ক্রিয়াকলাপ সম্পাদনের get_the_terms
জন্য count
মানটি ব্যবহার করেন যেখানে শব্দটি পুনরুদ্ধার করে এমন কোনও ক্রিয়াকলাপ করার বা সম্পাদন করার দরকার নেই, তবে কী হবে? ঠিক সেই ক্ষেত্রে দুর্দান্ত, আপনার জন্য কোনও সমস্যা নেই ।
তবে ... যদি অন্য কারও কারও কাছে set_object_terms
এই wp_set_object_terms()
ক্রিয়াকলাপের দিকে ঝুঁকে পড়ে এবং তারা গণনাটি সঠিক হওয়ার উপর নির্ভর করে? এখন আপনি দেখতে পাবেন কোথায় পরিণতি হতে পারে।
অথবা যদি অনুরোধটি বন্ধ হয়ে যাওয়ার পরে, আরেকটি অনুরোধ সম্পাদিত হয় যা একটি ট্যাক্সোনমি শব্দটি পুনরুদ্ধার করে count
এবং তাদের ব্যবসায়িক যুক্তিতে সম্পত্তিটি ব্যবহার করে ? এটা একটা সমস্যা হতে পারে।
যদিও এটির count
মূল্যবোধগুলি খুব বেশি ক্ষতি হতে পারে তা আমরা পেতে পারি না, তবে আমাদের নিজস্ব দর্শনের উপর ভিত্তি করে এই জাতীয় ডেটা কীভাবে ব্যবহৃত হবে তা আমরা ধরে নিতে পারি না।
পাশাপাশি বিকল্প উত্তরে উল্লিখিত হিসাবে, বিভাগের তালিকার টেবিলে প্রদর্শিত গণনাও আপডেট করা হবে না।
প্রকৃতপক্ষে আপনি মেয়াদ গণনা স্থগিত করার পরে এবং আপনার অনুরোধটি শেষ হওয়ার পরে টার্মের গণনাগুলি আপডেট করার একমাত্র উপায় হ'ল ম্যানুয়ালি কল করা wp_update_term_count($terms, $taxonomy)
বা অপেক্ষা করা যতক্ষণ না কেউ প্রদত্ত শ্রেণীবদ্ধের জন্য কোনও শব্দ সংজ্ঞা UI বা প্রোগ্রামগতভাবে যুক্ত করেন until
চিন্তার জন্য খাদ্য.