جایگزین مناسب تر آبجکت wp_query برای نمایش لیست مطالب سایت
اگر توسعه دهنده وردپرس هستید، حتما از آبجکت wp_query بارها و بارها استفاده کرده اید.
احتمالا هر جا که قرار باشد یکسری مطالب را در قالب به نمایش بگذارید (و یا هر جای دیگر در وردپرس)، از این آبجکت استفاده می کنید.
در حالی که حداقل برای نمایش لیستی از مطالب که جزئیات بسیار کمی نیز نیاز دارد، نیاز به آبجکت سنگین wp_query نداریم.
استفاده از آن در این موارد غیرضروری باعث کاهش چشمگیر سرعت صفحه می شود.
مثلا فرض کنید ما در صفحه اول سایت بیاوردپرس و در بخش بلاگ قرار است 8 مورد از آخرین مطالب با دسته خاص را به نمایش بگذاریم:
در این مورد ما نیاز به آبجکت wp_query نداریم چون صرفا قرار است هر مطلب، فقط یک عکس، لینک، عنوان و یک توضیح کوتاه داشته باشد.
ما در این بخش با استفاده از sql اختصاصی زیر اطلاعات خودمان را فچ کرده و به نمایش گذاشتیم و از آبجکت سنگین wp_query استفاده نکردیم:
$sql = "SELECT My_posts.id, My_posts.post_title, My_posts.post_excerpt, My_posts.post_name, My_terms.name, (SELECT guid FROM My_posts WHERE id = My_postmeta.meta_value) AS image FROM My_posts, My_postmeta, My_term_relationships, My_terms WHERE My_posts.id = My_term_relationships.object_id AND My_terms.term_id = My_term_relationships.term_taxonomy_id AND My_terms.term_id = '122' AND My_postmeta.post_id = My_posts.id AND My_postmeta.meta_key = '_thumbnail_id' ORDER BY My_posts.post_date DESC LIMIT 8;";
اکنون کافیست با استفاده از آبجکت wpdb و تابع get_results، کوئری خودمان به دیتابیس را اجرا نماییم:
global $wpdb; $results = $wpdb->get_results( $sql); foreach( $results as $item){ echo $item->image; echo $item->post_title; echo $item->post_name; echo $item->post_excerpt; }
نکته: لازم است این دستورات را در یک تابع و در فایل فانکشن تعریف کنیم و در محل موردنظر آن را فراخوانی کنیم.
کلام آخر
در این مطلب یاد گرفتیم که با کوئری مستقیم توانستیم اطلاعات موردنیاز مطالب را بدست آوریم. گرچه اگر به sql نویسی تسلط ندارید ممکن است نوشتن این کوئری ها برایتان دشوار باشد ولی با کمی تحقیق در اینترنت می توانید به نتایج موردنظر خود برسید
اگر در مورد این مطلب نظری دارید خوشحال می شویم در کامنت ها بیان کنید …