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

کوئری بر اساس 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 کاراکتر اول اون ها مقایسه میشه که ممکنه برای اعداد اشتباه اتفاق بیفته .

 

مطالب مشابه

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

Settings API در وردپرس

وردپرس برای ساخت پنل تنظیمات شبیه به پنل تنظیمات پیش فرض خودش API هایی رو قرار داده . Settings API , Options API دو...

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

Administration Menus در وردپرس

برای پیاده سازی پنل های شخصی در محیط ادمین وردپرس نیاز هست که یک منو به همراه یک صفحه در وردپرس ایجاد کنیم. هر منو که...

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

cron job در وردپرس

مفهوم cron job در وردپرس یعنی انجام یه کار (job) به صورت سیکل زمانی (intreval) با زمان شروع مشخص(start time). به طور...

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

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

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

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

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

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

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

پاسخ دهید

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