তাদের মেটাডেটা সহ আমার একগুচ্ছ পোস্টগুলি পাওয়া দরকার। অবশ্যই আপনি একটি স্ট্যান্ডার্ড পোস্ট ক্যোয়ারী সহ মেটাটাটা পেতে পারেন না, তাই আপনাকে get_post_custom()
প্রতিটি পোস্টের জন্য সাধারণত একটি করতে হয়।
আমি এর মতো একটি কাস্টম ক্যোয়ারী দিয়ে চেষ্টা করছি:
$results = $wpdb->get_results("
SELECT p.ID,
p.post_title,
pm1.meta_value AS first_field,
pm2.meta_value AS second_field,
pm3.meta_value AS third_field
FROM $wpdb->posts p LEFT JOIN $wpdb->postmeta pm1 ON (
pm1.post_id = p.ID AND
pm1.meta_key = 'first_field_key'
) LEFT JOIN $wpdb->postmeta pm2 ON (
pm2.post_id = p.ID AND
pm2.meta_key = 'second_field_key'
) LEFT JOIN $wpdb->postmeta pm3 ON (
pm3.post_id = p.ID AND
pm3.meta_key = 'third_field_key'
)
WHERE post_status = 'publish'
");
কাজ মনে হচ্ছে। আপনি যদি সেই মেটা ক্ষেত্রগুলির মধ্যে এমন কোনও উপায়ে একই পোস্টে ব্যবহার করেন যা এটির জন্য একাধিক মেটা মানকে একই পোস্টে ব্যবহার করে তা ট্রিপস আপ হয়ে যায়। আমি এটি করতে যোগদানের কথা ভাবতে পারি না।
সুতরাং, প্রশ্ন 1: একাধিক মান মেটা ক্ষেত্র আনতে একটি যোগদান, উপ-কোয়েরি, বা যা কিছু আছে?
তবে প্রশ্ন 2: এটি কি মূল্য? কত postmeta
টেবিল অগ্রহায়ণ আমি যোগ করার পূর্বে একটি 2-ক্যোয়ারী পদ্ধতির বাঞ্ছনীয় হয়ে না? আমি একটি পোস্টে সমস্ত পোস্ট ডেটা ধরতে পারি, তারপরে অন্যটিতে সমস্ত প্রাসঙ্গিক পোস্টমেটা ধরতে পারি এবং পিএইচপি-তে একটি রেজাল্টে পোস্ট ডেটার সাথে মেটা একত্রিত করতে পারি। যদি এটি এমনকি সম্ভব হয় তবে কি কোনও একক-জটিল-এস -কিউএল কোয়েরির চেয়ে দ্রুততর হবে?
আমি সবসময়ই মনে করি, "ডাটাবেসে যতটা সম্ভব কাজ দিন।" এই এক নিশ্চিত না!
get_posts()
, তারপর get_post_meta()
ঐ প্রত্যেকের জন্য? @ ম্যানিফ্লুরমন্ড, ডব্লিউপি-র অন্তর্নির্মিত ক্যাচিংয়ের বিষয়ে শক্ত তথ্য খুঁজে পাওয়া শক্ত, তবে আফাইক এটি অনুরোধ অনুসারে স্টোরকে ক্যাশে করবে। এই ডেটাটি ধরার জন্য সার্ভারকে কল করা একটি এজেএক্স কল, এবং আমি মনে করি না এর আগে আর কোনও জিনিস হস্তান্তরিত হবে।