আমার সম্প্রতি একইরকম সমস্যা হয়েছিল, কাস্টম পোস্ট টাইপ থেকে আমার 7 পিস মেটাডেটা নেওয়া দরকার ছিল, তবে মেটাডেটার টুকরো ভিত্তিক পোস্টটিও পাওয়া দরকার।
সুতরাং আমি নিম্নলিখিত এসকিউএল বিবৃতি তৈরি করেছি, আমি প্রায়শই এটি ব্যবহার করি। আশা করি এটি অন্য কাউকে সহায়তা করবে। আমি চেষ্টা করব এবং এটিকে যথাসাধ্য ব্যাখ্যা করব।
global $wpdb;
$pt = 'clients';
$mk = 'trainerid';
$mv = $pid;
$mk1 = 'email';
$mk2 = 'phone';
$mk3 = 'gender';
$mk4 = 'dob';
$mk5 = 'photo';
$mk6 = 'registrationts';
$mk7 = 'activationts';
$ord = 'p.post_name ASC';
$sql = "
SELECT p.ID, p.post_title AS fullname, pm1.meta_value AS email, pm2.meta_value AS phone, pm3.meta_value AS gender, pm4.meta_value AS dob, pm5.meta_value AS photo, pm6.meta_value AS regts, pm7.meta_value AS actemailts
FROM {$wpdb->posts} p
LEFT JOIN {$wpdb->postmeta} pm ON pm.post_id = p.ID
AND pm.meta_key = '{$mk}'
LEFT JOIN {$wpdb->postmeta} pm1 ON pm1.post_id = p.ID
AND pm1.meta_key = '{$mk1}'
LEFT JOIN {$wpdb->postmeta} pm2 ON pm2.post_id = p.ID
AND pm2.meta_key = '{$mk2}'
LEFT JOIN {$wpdb->postmeta} pm3 ON pm3.post_id = p.ID
AND pm3.meta_key = '{$mk3}'
LEFT JOIN {$wpdb->postmeta} pm4 ON pm4.post_id = p.ID
AND pm4.meta_key = '{$mk4}'
LEFT JOIN {$wpdb->postmeta} pm5 ON pm5.post_id = p.ID
AND pm5.meta_key = '{$mk5}'
LEFT JOIN {$wpdb->postmeta} pm6 ON pm6.post_id = p.ID
AND pm6.meta_key = '{$mk6}'
LEFT JOIN {$wpdb->postmeta} pm7 ON pm7.post_id = p.ID
AND pm7.meta_key = '{$mk7}'
WHERE pm.meta_value = '{$mv}'
AND p.post_type = '{$pt}'
AND p.post_status NOT IN ('draft','auto-draft')
ORDER BY {$ord}
";
$clients = $wpdb->get_results( $wpdb->prepare( $sql ), OBJECT );
প্রথমে আমি ওয়ার্ল্ড $ wpdb সহ ওয়ার্ডপ্রেস ডাটাবেস ফাংশন পাই। তারপরে আমি পোস্ট টাইপটি $ pt দিয়ে সেট করেছিলাম। পোস্ট_মেটাতে একটি নির্দিষ্ট মানের সাথে মেলে এমন সঠিক পোস্টটি পেতে, আমি $ এমকে (মেটা_কি) সেট করেছি
তারপরে আমি $ এমভি (মেটা_ভ্যালু) ভেরি সেট করেছি। (এই ক্ষেত্রে মেটা মান একটি পোস্টের সাথে মেলে)
post mk1- $ mk7 হ'ল মেটা_কিগুলি প্রতিটি পোস্ট থেকে আমি চাই। (আমি নির্বাচিত বিবৃতিতে মানগুলি ধরব)
আমি var অর্ডার করে একটি 'অর্ডার বাই' করে একটি ভারও তৈরি করি
নির্বাচনের বিবৃতিটি নিম্নরূপ: আমি পোস্ট আইডি এবং পোস্ট_শিরোনামটি পোস্ট বা 'পি' থেকে নির্বাচন করি।
তারপরে আমি আমার সমস্ত মেটাডেটা সিএম 1 দিয়ে তাদের নির্বাচন করতে চাই। -> সন্ধ্যায় and. এবং মেটা_ভ্যালুটি ধরে ফেলুন এবং তাদের (এএস) নামকরণ করুন যাতে আমার অবজেক্ট থেকে ডেটা পুনরুদ্ধার করার সময় এটি আরও পঠনযোগ্য।
পোস্টের সাথে মেটাতে থাকা মেটা ডেটার জন্য আমি একটি বাম জয়েন্ট তৈরি করি। (PM)
আমি পুনরুদ্ধার করতে হবে এমন প্রতিটি মেটা ডেটার জন্য আমি 7 টি বাম জোড় তৈরি করি। (Pm1-pm7)
WHERE বিবৃতিটি প্রথম বাম যোগদানের (বিকেলে) উপর ভিত্তি করে তৈরি করা হয় যাতে এটি জানতে পারে যে মেটাডেটা মেলে সেখানে কেবল আমার পোস্টের প্রয়োজন need
আমি পোস্টের ধরণের জন্য এবং পোস্ট_ স্ট্যাটাসগুলির জন্য একটি 'এবং' যুক্ত করি যা খসড়া নয়। (কেবলমাত্র প্রকাশিত পোস্ট)
অবশেষে আমি 'অর্ডার বাই' ধারাটি যুক্ত করব।
এটি দ্রুত এবং ওয়ার্ডপ্রেসে অন্তর্নির্মিত ইনডেক্সগুলির সাথে কাজ করে, সুতরাং এটি কার্যকর বলে মনে হচ্ছে।
এর থেকে ভাল কিছু আছে কিনা তা জানেন না তবে এটি যদি হয় তবে আমি এটি ব্যবহার করতে পছন্দ করব।
আশাকরি এটা সাহায্য করবে.
মার্কাস
get_post_meta
স্বতন্ত্র কীগুলিতে চালানো , ২)get_post_custom
এক শটে সমস্ত পোস্টের কাস্টম ফিল্ড পেতে রান করুন , বা 3)get_results()
আপনার নিজের রিটার্ন অবজেক্ট তৈরি করতে $ wpdb বর্গ ( ) ব্যবহার করে আপনার নিজের ক্যোয়ারী তৈরি করুন । ( p wpdb বর্গ ডকুমেন্টেশন: codex.wordpress.org/Class_References/wpdb )