আপনার প্রশ্নের দৃ concrete়ভাবে উত্তর দেওয়া বেশ কঠিন। প্রথম অংশ যদিও সহজ। আমি সম্প্রতি স্ট্যাকওভারফ্লোতে অনুরূপ কিছু করেছি
মেটা কীগুলি তুলনা করা হয় এবং ঠিক মিলছে। WP_Query
একটি সাধারণ প্যারামিটারের সাথে এই আচরণটি সামঞ্জস্য করার কোনও উপায় নেই, তবে আমরা সর্বদা নিজেকে পরিচয় করিয়ে দিতে পারি এবং তারপরে মেটা কীগুলির সাথে তুলনা posts_where
করার জন্য ধারাটি সামঞ্জস্য করতে পারি LIKE
।
ফিল্টার
এটি কেবলমাত্র একটি প্রাথমিক ফিল্টার, এটি প্রয়োজনীয় হিসাবে সামঞ্জস্য করুন।
add_filter( 'posts_where', function ( $where, \WP_Query $q )
{
// Check for our custom query var
if ( true !== $q->get( 'wildcard_on_key' ) )
return $where;
// Lets filter the clause
$where = str_replace( 'meta_key =', 'meta_key LIKE', $where );
return $where;
}, 10, 2 );
যেহেতু আপনি দেখতে পারেন, ফিল্টার শুধুমাত্র যখন আমরা আমাদের নতুন কাস্টম প্যারামিটার সেট বহিস্কার করা হয় wildcard_on_key
থেকে true
। এই চেক আউট, কেবলমাত্র আমরা পরিবর্তন যখন =
comparator করার LIKE
comparator
এটির জন্য কেবল একটি নোট, LIKE
তুলনাগুলি সহজাতভাবে আরও ব্যয়বহুল যে অন্যান্য তুলনাগুলি চালানো
দ্য QUERY
মেটা কী সহ সমস্ত পোস্ট পেতে আপনি কেবল নিজের পোস্টগুলিকে অনুসরণ করতে পারেন like_status_{user_id}
$args = [
'wildcard_on_key' => true,
'meta_query' => [
[
'key' => 'like_status_',
'value' => 1,
]
]
];
$query = new WP_Query( $args );
অন্য প্রশ্ন
কাস্টম ক্ষেত্রগুলি পারফরম্যান্সে প্রভাব ফেলবে না, আপনি এই বিষয়ে আমার পোস্টটি এখানে পড়তে পারেন । আমি তবে এতে সমস্যায় পড়েছি যে আপনি বলেছিলেন যে প্রতিটি পোস্টে কয়েকশ বা হাজার হাজার পছন্দ থাকতে পারে। এটি আপনার প্রচুর পরিমাণে কাস্টম ফিল্ড ডেটা এবং পারফরম্যান্স লাভ করতে পারে। এটি আপনার ডিবিতে প্রচুর পরিমাণে অপ্রয়োজনীয় কাস্টম ফিল্ড ডেটা আটকে রাখতে পারে যা এটি বজায় রাখা বেশ শক্ত করে তোলে।
কাস্টম ক্ষেত্রগুলিতে সিরিয়ালযুক্ত ডেটা সংরক্ষণ করার আমি খুব বড় ভক্ত নই কারণ সিরিয়ালযুক্ত ডেটা দ্বারা কেউ অনুসন্ধান বা অর্ডার করতে পারে না। তবে আমি সমস্ত ব্যবহারকারীর আইডি হ'ল একটি কাস্টম ক্ষেত্রের অধীনে একটি অ্যারেতে সংরক্ষণ করার পরামর্শ দেব। কোনও ব্যবহারকারী যখন কোনও পোস্ট পছন্দ করেন তখন আপনি কেবল ব্যবহারকারী আইডি দিয়ে অ্যারে আপডেট করতে পারেন। কাস্টম ফিল্ড ডেটা পাওয়া এবং আইডির অ্যারের উপরে লুপিং করা এবং আইডির সাহায্যে কিছু করা সহজ। শুধু একবার দেখুনget_post_meta()
একটি কাস্টম ক্ষেত্র আপডেট করাও সহজ। তার জন্য, আপনাকে সন্ধান করতে হবে, আপনি update_post_meta()
কীভাবে আপনার পছন্দসই ক্ষেত্র তৈরি করেন তা আমি জানি না, তবে update_post_meta()
অবশ্যই আপনি এটি ব্যবহার করতে চান।
কাস্টম ক্ষেত্রটি আপডেট হওয়ার পরে আপনার যদি ইমেলগুলি প্রেরণ বা বিজ্ঞপ্তিগুলি ধাক্কা দেওয়ার দরকার হয় তবে আপনার সাথে কাজ করার জন্য নিম্নলিখিত হুকগুলি উপলব্ধ। ( প্রসঙ্গে দেখুনupdate_metadata()
)
উপসংহার
আমি এটি পোস্ট করার ঠিক আগে, আবার সিরিয়ালাইজড রুটে যাওয়ার আগে, নিশ্চিত হয়ে নিন যে আপনাকে ক্রমযুক্ত ডেটা অনুসারে বাছাই করার দরকার নেই বা সিরিয়ালযুক্ত ডেটার ভিতরে নির্দিষ্ট ডেটা অনুসন্ধান করার দরকার নেই।