💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ رضا زمانی
یک ابهام در بهینه بودن کوئری کامنت ها
ابوالفضل محجوب حل شده توسط ابوالفضل محجوب

سلام.

آیا برای چاپ "عنوان مطلبی" که کاربر برای آن کامنت می‌گذارد، یک کوئری به دیتابیس زده میشود.بعبارت بهتر تابع get_the_title($comment->commpent_post_ID) برای نمایش عنوان مطلب، مجددا یک کوئری به دیتابیس میزند تا عنوان مطلب را واکشی کند یا خیر؟این مطلب از آنجا حائز اهمیت هست که اگر مثلا برای یک نویسنده مثلا صد کامنت ثبت شده باشد در این کوئری به ازای هر کامنت باید یک کوئری مجدد و در مجموع صد کوئری بزند و این یک فاجعه هست!!!

$args = [
  'author__not_in'            => true,
  'post_author'               => get_the_author_meta('ID'), 
  'status'                    => 'approve', 
];
$comments_query = new WP_Comment_Query();
$comments = $comments_query->query($args);
   <?php if($comments):?>
     <?php foreach($comments as $comment):?>
      <h4>
      <a href="<?php echo get_comment_link($comment->comment_ID)?>">                  <?php echo get_the_title($comment->commpent_post_ID)?>
       </a>
       </h4>  
      <?php endforeach;?>
         <?php endif?>

کلا این سوال رو به کل توابعی که get_the دارند میشود تعمیم داد(get_author_posts_url، get_the_author_meta و ....) و این ابهام برای من وجود دارد این توابعی که با get شروع میشوند، مجددا کوئری میزنند یا خیر؟

 

 

سلام مجددا روزبخیر

بله به ازای هر get_ یک کوئری به دیتابیس زده میشه اگر تعداد کم باشه مشکلی پیش نمیاد که تو اکثر موارد همین شرایط هستش ولی در موارد استثنا برای تعداد زیاد میشه از راه‌های جایگزین استفاده کرد که با کمی سرچ و خلاقیت میشه بهش رسید

مثلا استفاده از wpdb که میشه تمام کامنت‌هارو بگیریم و بریزیم داخل آرایه و از اون استفاده کنیم

بهترین پاسخ
ابوالفضل محجوب ۱۹ مهر ۱۴۰۳، ۰۷:۱۷