تعداد بازدید: 114

کوئری بر اساس postmeta در وردپرس (meta_query)

در این مقاله ما می خواهیم یاد بگیریم تا چطور بر اساس custom_fields یا post meta در وردپرس کوئری بگیریم. هر کوئری می تونه بر اساس شروط مختلفی پست های مختلفی رو بگیره. یکی از اون شروط فیلد های اضافی است که برای هر پست در جدول postmeta وجود داره.

نحوه استفاده از meta_query

♣ برای استفاده از meta_query ها ما می تونیم از کلاس WP_Query یا تابع get_posts استفاده کنیم.

♣ هر آرایه درون آرایه پارامتر meta_query یک شرط به حساب میاد که اگر تنهای یک آرایه داشته باشیم حالت simple و اگر چند آرایه داشته باشیم حالت multiple و اگر آرایه های تو در تو داشته باشیم حالت nested بوجود می آید که در حالت multiple , nested می توانیم از relation استفاده کنیم. مثل tax_query ها .

در ابتدا ما حالت single را بررسی می کنیم.

پارامتر های meta_query به قرار زیر هستند:

  • key : زمینه دلخواه یا کلید متای شما .
  • value : مقدار اون متا. که بسته به پارامتر نوع می تونه رشته یا عدد باشه و بسته به پرامتر compare می تونه آرایه یا single باشه.
  • type : نوع ورودی که به meta_value میدید رو تعیین می کنه که پارامتر های NUMERIC , BINARY , CHAR , DATE , DATETIME , DECIMAL , SIGNED , TIME , UNSIGNED رو میگیره و مقدار پیش فرض اون CHAR هست برای رشته ها.
  • compare : عملگر مقایسه رو برای value تعیین می کنه که پارامتر های زیر رو میگیره:
    = , !=>>=<<=LIKENOT LIKE  که برای meta_vlaue ها به صورت single استفاده میشه .

    IN , NOT IN , BETWEEN , NOT BETWEEN , EXISTS (only in WP >= 3.5), NOT EXISTS که در صورت استفاده باید meta_value به صورت آرایه باشه.

    REGEXP , NOT REGEXP , RLIKE که برای استفاده از عبارات منظم استفاده می شه.
    تشریح پارامتر EXISTS : یعنی صرفا key برای اون پست set شده باشه . می تونید در این مورد meta_value رو خالی بزارید.
    تشریح پارامتر NOT EXISTS : یعنی key برای اون پست set نشده باشه . در این مورد هم نیاز به meta_value نیست.
  • relation : رابطه ای که قرار است بین شروط که هر کدام در یک آرایه هست برقرار باشه برای گرفتن پست ها. بدین شکل که هر آرایه که حاوی key , value ,  type , compare هست یک شرط محسوب میشه و این شرط ها می تونن به صورت AND یا OR باشند.

استفاده از چند شرط یا حالت multiple در meta_query

در این حالت بیش از دو شرط (دو آرایه) داریم:

♣ می بینید که این بار استفاده از relation معنی پیدا می کنه.

استفاده از شرط های تودرتو یا nested در meta_query

در این حالت هر شرط می تونه از چند شرط دیگه تشگیل شده باشه که میشه آرایه های تودرتو:

کوئری گرفتن بر مبنای postmeta بدون استفاده از meta_query

در این حالت ما بدون استفاده از meta_query و با استفاده از پارامتر های زیر یک کوئری بر اساس postmeta می زنیم. دقت داشته باشید تنها برای مورد single می توانید از این روش استفاده کنید.

  • meta_key : کلیدی که قراره بر اساس اون meta_value عملگر مقایسه روش انجام بشه.
  • meta_value : مقدار مد نظر برای meta_key .
  • meta_compare : نوع عملگر مقایسه.
  • meta_type : نوع meta_value که مقادیرش رو در چند خط قبل بررسی کردیم.

نکته مهم : برای مقایسه دو مقدار حتما باید نوع اون رو در نظر داشته باشید. به طور مثال عدد ۲۰ از عدد ۱۰۰ کوچکتره در صورتی که مبنا عددی باشه . برای مقایسه در مبنای عددی خود اعداد مقایسه می شن اما اگر شما مبنا رو رشته در نظر بگیرید کد ascii کاراکتر اول اون ها مقایسه میشه که ممکنه برای اعداد اشتباه اتفاق بیفته .

 

مطالب مشابه

آموزش نکات و تکنیک های برنامه نویسی وردپرس

نکات امنیتی وردپرس

چون وردپرس یک سیستم متن باز است لذا کدهای آن و ساختار پایگاه داده آن برای تمامی افراد قابل دسترس است . به همین منظور...

آموزش نکات و تکنیک های برنامه نویسی وردپرس

Hooks: Actions and Filters

هیچ وقت هسته وردپرس رو تغییر ندید (do'nt touch the core) . بدین معنی هست که برای هک وردپرس راه دیگری غیر از تغییر...

آموزش نکات و تکنیک های برنامه نویسی وردپرس

Ajax در وردپرس

ajax یک درخواست به سرور (request) و دریافت پاسخ (Response) بدون refresh صفحه از طریق شی xmlHttpRequest است. Request...

اشتراک گذاری :

ابوالفضل صباغ

برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای کوئری بر اساس postmeta در وردپرس (meta_query)

پاسخ دهید

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