قدرت اصلی متاباکس ها امکان ذخیره کردن داده برای یک نوشته ، برگه و هر نوع محتوای دیگر در وردپرس است .

هر داده ای که مرتبط با محتوای وردپرس در بانک اطلاعاتی ذخیره شود ، متاداده نام دارد .

در صفحه افزودن / ویرایش نوشته وردپرس به صورت پیش فرض متاباکسی برای فیلدهای سفارشی وجود دارد که می توانید آن را از طریق بخش ” تنظیمات صفحه ” موجود در بالای صفحه ، سمت چپ آن را فعال یا غیرفعال کنید .

فیلدهای سفارشی یک روش سریع برای ذخیره متاداده برای محتوای وردپرس است .

در فصل 11 ” توسعه نوشته ها ” ، متاداده ها به صورت دقیق تر مورد بررسی قرار خواهند گرفت ، اما نیاز است که شما مفهوم ذخیره داده در متاباکس را یاد بگیرید .

در مثال زیر یک متاباکس روی نوشته های وردپرس برای ذخیره 2 فیلد ایجاد شده است .

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

اولین چیزی که باید به آن دقت کنید این است که شیء $post به عنوان یک پارامتر به تابع سفارشی ارسال شده است . اینکار به شما امکان می دهد که همه داده های موجود نوشته یا post را در یک شیء در اختیار داشته باشید و از آنها استفاده کنید . در این مثال از شناسه یا ID نوشته در متاباکس استفاده می شود .

 

اکنون نیاز دارید که مقادیر دو متاداده را در صورت وجود داشتن از وردپرس دریافت کنید . برای اینکار از تابع get_post_meta() استفاده می شود .

این تابع 3 پارامتر را دریافت می کند که عبارتند از :

post_id – شناسه نوشته که شما می خواهید متاداده را از آن دریافت کنید .

key – نام منحصربفرد فیلد متاداده که می خواهید آن را دریافت کنید .

single – توسط این گزینه می توانید تعیین کنید که خروجی تابع به صورت یک آرایه باشد یا یک رشته تکی .

 

اگر شما یک post یا نوشته جدید ایجاد کنید ، 2 مقدار متاداده وجود نخواهند داشت ، زیرا فیلدها ایجاد نشده اند .

در گام بعدی 2 فیلد فرم نمایش داده می شوند .

فیلد اول یک فیلد متنی برای یک نام است . دقت کنید که مقدار فیلد متنی با متغیر $rwpp_mbe_name تنظیم شده است که مقدار دریافتی متاداده را در خود نگهداری می کند . مقدار این متغیر به خاطر مسائل امنیتی توسط تابع esc_attr() رد شده است .

فیلد دوم در فرم ، یک فیلد فرم HTML از نوع <select> است .

این فیلد دارای 3 انتخاب Vampire  ، Zombie و Smurf است .

در این مثال از تابع selected() برای تشخیص انتخاب شدن گزینه های فیلد انتخاب استفاده شده است .

اکنون فرم متاباکس کامل شده است و مشاهده می کنید که نیازی به اضافه کردن دکمه ارسال ( submit ) و یا تگ form به متاباکس وجود نداشت .

با استفاده از قلاب اکشن save_post مقادیر به تابع rwpp_mbe_save_meta() ارسال می شوند که در بخش زیر مشاهده می کنید .

 

در کد بالا ابتدا از تابع add_action() برای اجرای قلاب اکشن save_post استفاده شده است تا در زمان ذخیره نوشته ، تابع rwpp_mbe_save_meta() فراخوانی شود .

این تابع داده های وارد شده توسط کاربر در متاباکس را ذخیره می کند .

دقت کنید که متغیر $post_id به عنوان پارامتر به تابع ارسال شده است .

شناسه نوشته در زمان ذخیره متاداده ها مورد استفاده قرار می گیرد .

یک روش خوب برای تایید فیلدهای فرم استفاده از تابع  isset() موجود در php است .

در پایان بوسیله تابع update_post_meta() متاداده های وارد شده توسط کاربر ذخیره یا بروزرسانی می شوند .

تابع update_post_meta() دارای 4 پارامتر به شرح زیر است :

post_id – شناسه نوشته ای که می خواهید متاداده ها را برای آن ذخیره کنید .

meta_key –  نام منحصربفرد فیلد متاداده ای که می خواهید آن را ذخیره کنید .

meta_value – مقدار متاداده برای ذخیره شدن

prev_value – مقدار قدیمی فیلد متاداده که برای فیلدهای همنام متفاوت است .

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

مقادیر فرم توسط تابع strip_tags() پاکسازی می شوند .

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

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

اکنون کد کامل این مثال را مشاهده کنید .

ایجاد متاباکس (Meta Box) در وردپرسایجاد متاباکس پیشرفته در وردپرس
پیشنهاد می کنیم برای دریافت آخرین مطالب کانال تلگرام کانی تمزرا دنبال کنید .