استاد شدن در متا دیتا وردپرس – پرس و جو در پست ها و کاربران با متا دیتا

استاد شدن در متا دیتا وردپرس – پرس و جو در پست ها و کاربران با متا دیتا

تاکنون در این مجموعه آموختیم که چگونه به متادیتای وردپرس دسترسی داشته باشیم، و کار با آرایه ها که برگشت داده می شوند. ما نه تنها فیلد سفارشی به پست های وردپرس اضافه کردیم، بلکه اطلاعات را بر اساس آنها مرتب و نمایش دادیم.

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

 

استفاده از WP_Query برای پرس و جو بوسیله مقدار متادیتا

به منظور سفارشی کردن این که چه پست هایی بر اساس متا فیلد ها برگشت داده شوند، ما نیاز داریم که از WP_Query و یک meta_query مشخص استفاده کنیم. اگر، به عنوان مثال، ما یک custom post type با نام films داریم که یک فیلد سفارشی (custom filed) به نام director دارد، می توانیم برای فیلم های query ایجاد کنیم تا ببینیم کدام از کارگردان ها، کارگردان سه فیلم جنگ ستارگان است.

به کدهای زیر نگاه بیندازید و می توانید از تسلط خود بر روی آرایه ها اسفاده کنید که در قسمت قبلی جریان meta_query را یاد گرفتیم. من کد های زیر را به قسمت های کوچکتر تقسیم می کنم تا بهتر متوجه شویم.

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

ابتدا، ما آرایه ای را برای آرگومان WP_Query ایجاد کرده ایم. بعد از اولین آرگومان ما یعنی post_type، آرایه ای دیگر را برای آرگومان meta_query ایجاد کردیم.

در داخل آن مشخص کردیم که کدام در کدام کلید (key) یاید جستجو کنیم که در این مثال director است. ما همچنین آرایه ای از مقادیر برای جستجو در این کلید را ایجاد کردیم.

آخرین آرگومان برای مقایسه کردن این مقدارها می باشد، در این مورد ما مقدار IN را مشخص کردیم تا هر پستی در کلید director شامل ایم مقادیر باشد را یازیابی کند.

 

دیگر مقایسه ها

حال اگر بخواهیم فیلم هایی ذیگری که توسط کارگردان های فیلم جنگ ستارگان کارگردانی شده و همچنین نام فیلم های جنگ ستارگان در این جستجو نباشد چه؟ تنها کافی است یک آرایه ای از آرگومان های دیگر برای meta_query مشخص کنیم، اما این بار برای مقادیر از آرایه ای از عنوان فیلم ها برای کلید film_title استفاده می کنیم، و برای مقایسه از NOT LIKE برای نادیده گرفتن پست هایی که شامل این مقادیر در فیلد film_title است استفاده می کنیم.

حال وردپرس بر اساس نام کارگردان ها جستجو می کند.

 

نمایش متا فیلد ها (Meta Fields) در WP_Query

تاکنون ما یاد گرفتیم که چگونه از WP_Query برای پیدا کردن پست هایی کنیم که دارای مقدار خاصی در فیلدهای سفارشی (custom filed) هستند، اما حالا چگونه این فیلدها را نمایش دهیم!

نمایش دادن این فیلدها خیلی شبیه به قبل است، اما به جای استفاده از ()get_the_ID برای مشخص کردن شناسه (ID) برای ()get_post_meta ما آن را در یک شی مشخص می کنیم. بنابراین در حلقه ای، که در زیر مشاهده می کنید، شناسه (ID) با کمی اعمال تغییرات، از query->post-ID$ استفاده می کنیم.

 

استفاده از WP_User_Query

همانند قسمت قبل، وقتی از WP_Query برای پیدا کردن پست هایی با مقدار خاص در custom field استفاده می کنیم، می توانیم از معادل WP_Query یعنی WP_User_Query استفاده کنیم.

برای مثال، اگر یک فیلد سفارشی با نام subscriber_level داشته باشیم و بخواهیم فقط آن دسته از کاربرانی که سطح دسترسی extra_special یا super_special هستند را پیدا کنیم، باید همانند قبل که برای جستجوی کارگردان فیلم جنگ ستارگان استفاده شد عمل کنیم.

درست مانند WP_Query، می توانیم مقایسه های مختلفی را برای کنترل بیشتر داشته باشیم تا مسخص کنیم کدام از کاربرها باید برگشت (return) داده شوند. مثال بعدی آخرین query را با یک query دیگر ترکیب می کند، این بار در جدول wp_users کاربرانی که نام Luke، Han، Leia هستند را نشان می دهد.

 

پایان

در این سری از آموزش، شما با مقدمه ای از متا دیتا های وردپرس آشنا شدید و با هسته ی PHP آشنا شدید.

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