جایگزین مناسب تر آبجکت wp_query برای نمایش لیست مطالب سایت

تاریخ: ۱۵ فروردین ۱۴۰۰

اگر توسعه دهنده وردپرس هستید، حتما از آبجکت wp_query بارها و بارها استفاده کرده اید.

احتمالا هر جا که قرار باشد یکسری مطالب را در قالب به نمایش بگذارید (و یا هر جای دیگر در وردپرس)، از این آبجکت استفاده می کنید.

در حالی که حداقل برای نمایش لیستی از مطالب که جزئیات بسیار کمی نیز نیاز دارد، نیاز به آبجکت سنگین wp_query نداریم.

استفاده از آن در این موارد غیرضروری باعث کاهش چشمگیر سرعت صفحه می شود.

مثلا فرض کنید ما در صفحه اول سایت بیاوردپرس و در بخش بلاگ قرار است 8 مورد از آخرین مطالب با دسته خاص را به نمایش بگذاریم:

در این مورد ما نیاز به آبجکت wp_query نداریم چون صرفا قرار است هر مطلب، فقط یک عکس، لینک، عنوان و یک توضیح کوتاه داشته باشد.

استفاده نابجا از آبجکت 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 نویسی تسلط ندارید ممکن است نوشتن این کوئری ها برایتان دشوار باشد ولی با کمی تحقیق در اینترنت می توانید به نتایج موردنظر خود برسید

اگر در مورد این مطلب نظری دارید خوشحال می شویم در کامنت ها بیان کنید …

 

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *