برنامه نویسی

توابع پرس و جو WP – از چه چیزی استفاده کنید و چه زمانی

توابع و کلاسهای اصلی وردپرس به طور کلی از نظر عملکرد و امنیت بسیار عالی هستند.

وقتی نوبت به بازیابی داده ها از پایگاه داده می رسد ، WP_Query کلاس و روشهای آن ، شیوه ای ایمن و کارآمد برای انجام آن را برای ما فراهم می کند و از نمایش داده های پیچیده SQL جلوگیری می کند. برخی از بسته های اضافی از WP_Query، مانند query_posts() وت get_posts()بشر


query_posts

کدکس وردپرس صریحاً می گوید “رویکرد بیش از حد شبیه سازی آن برای اصلاح پرس و جو اصلی می تواند مشکل ساز باشد و باید اجتناب شود هر کجا ممکن است

این بسته بندی پرس و جو ناکارآمد است (مجدداً نمایش داده شد SQL) و در برخی شرایط به ویژه در هنگام برخورد با صفحه بندی پست ها شکست خواهد خورد. این یک شیء جدید wp_query را فوراً می کند و آن را به global wp_query، شکستن پرس و جو اصلی که بسیاری از افزونه ها ، مضامین و اسکریپت های سفارشی به آن اعتماد دارند. برای نمایش داده های ثانویه (حلقه های سفارشی) WP_QUERY خود را فوری کنید.

استفاده کردن new WP_Query یا get_posts() که تقریباً قابل تعویض هستند (دوم بسته بندی نازک برای سابق است). اگر می خواهید پرس و جو اصلی را تغییر دهید ، از آن استفاده کنید pre_get_posts قلاب $query->is_main_query() بررسی کنید pre_get_posts فیلتر برای تغییر هر پرس و جو است و بیشتر از آن برای تغییر “پرس و جو اصلی” استفاده می شود. این تراک در مورد استهلاک است query_postsبشر

بنابراین:

شما باید هرگز استفاده کردن query_posts()بشر


get_posts

این در واقع یک بسته بندی برای یک نمونه جداگانه از a است WP_Query شیء. این یک “حلقه” نیست ، بلکه به سادگی مجموعه ای از اشیاء پست را برمی گرداند.

این همان آرگومان های WP_QUERY را می پذیرد ، متغیرهای جهانی را تغییر نمی دهد و از هر جایی برای استفاده بی خطر است. عبور می کند 'no_found_rows' => true به طور پیش فرض ، بنابراین فقط برای پرس و جوهای غیر صفحه ای استفاده می شود. این پست های چسبنده را نادیده می گیرد ، فقط برای نمایش ویژگی $ post نیاز به یک حلقه پیشانی دارد و به setup_postdata( $post ) برای تهیه برچسب های الگو. WP_Query از حلقه های حلقه استفاده می شود و برچسب های الگو به طور پیش فرض در دسترس هستند.

استفاده کردن get_posts() برای برخی از داده های سریع ، غیر صفحه بندی ، داده می شود.


WP_QUERY

WP_Query کلاس پشت هر دو کارکرد فوق است. قدرت WP_Query از امکان ایجاد و کار با نمونه خود در مورد آن ناشی می شود. این یک ابزار کلی با هدف کلی است ، شبیه به نوشتن مستقیم MySQL ، برای یک اسکریپت پرس و جو دقیق سفارشی.

کمی پیچیده تر با محدودیت های کمتری ، بنابراین در حالی که از استفاده در هر نقطه ایمن تر است ، قدرتمندتر می شود.

استفاده از a new WP_Query برای یک اسکریپت پرس و جو عمیق و انعطاف پذیر.


تنظیم مجدد/پاکسازی

  • استفاده کردن wp_reset_query() اگر استفاده کرده اید query_posts() یا جهانی تغییر یافته $wp_query به طور مستقیم – امیدوارم که هرگز نیازی به آن نخواهید داشت.
  • استفاده کردن wp_reset_postdata() اگر استفاده کرده اید the_post() یا setup_postdata() برای بازگرداندن وضعیت اولیه پست جهانی $.

عمل

همه نمایش داده ها سرانجام بسته بندی می شوند WP_Query، و در حالی که برخی از آنها بهتر از دیگری هستند (هرگز استفاده نکنید query_posts) ، تفاوت عملکرد get_posts در مقابل WP_Query ناچیز هستند در WP_Query سریعتر از get_posts با یک حاشیه بسیار کوچک.

با این حال پارامترهای ارائه شده توسط WP_Query کلاس به طور خاص می تواند نمایش داده های SQL را بهینه کند ، زمان اجرای و مصرف منابع را کاهش دهد. (Ref. 1 | 2)

  • وقتی نیازی به صفحه بندی نداریم ، باید تنظیم کنیم no_found_rows به true، ساخت پرس و جو به طرز چشمگیری سریعتر اجرا می شود.
  • هنگامی که زمینه های خاص لازم نیست ، قسمت های برگشتی را به IDS محدود کنید: 'fields' => 'ids'

نوشته های مشابه

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

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

دکمه بازگشت به بالا