شما برای هر نوشته خود دستهای را مشخص میکنید و همین امر سبب میشود کاربران در یافتن مطالب شما بسیار راحتتر عمل کنند. بخش دستهها در وردپرس دارای فیلدهای مختلفی است اما فیلد تصویر شاخص در آن به چشم نمیخورد. دستهها در وردپرس در واقع جزء مهم و حیاتی محسوب میشوند که باعث نظم تمامی قسمتها از جمله نوشتههای سایت میشوند. اما شاید شما جزء آن دسته از افراد هستید که تمایل به افزودن تصاویر به دستهها دارید. چگونه فیلد تصاویر را به دسته ها اضافه کنیم؟ در این مقاله تصمیم گرفتیم آموزش افزودن فیلد تصویر به دسته ها در وردپرس را با کمک کدنویسی خدمت شما آموزش دهیم. امیدوارم ما را تا انتهای این آموزش همراهی کنید.
چگونه فیلد تصاویر را به دسته ها اضافه کنیم؟
ابتدا با یک گروهبندی استاندارد شروع میکنیم و سپس به ساخت یک دسته سفارشی میپردازیم.
در عکس زیر میتوانید یک image upload field افزوده شده به یک گروهبندی استاندارد را مشاهده کنید:
فیلد افزودن تصویر در دسته را اضافه کنید.
برای اینکه از گزینه پیشفرض مدیریت چندرسانهای وردپرس برای آپلود تصاویر در گروهبندیها استفاده کنیم، کلاس زیر را در نظر میگیریم:
این کلاس را ایجاد کردهایم تا راحتتر بتوانیم کد را دوباره استفاده کنیم اما شما میتوانید این کد را در فایل functions.php خود استفاده کنید فقط باید کمی آن را اصلاح (refactor) کنید.
حال برای درک بهتر روند کار، قدمبهقدم پیش میرویم و مراحل را جز به جز توضیح میدهیم.
۱- افزودن متا دیتای جدید
اولین تابع، یک فیلد جدید به فرم «افزودن گروهبندی جدید» اضافه میکند.
متا دیتای جدیدی را اضافه کنید.
توجه کنید که ID attachment تصویر را در یک فیلد ورودی مخفی ذخیره میکنیم؛ سپس تصویر پیشنمایش را به کاربر نمایش میدهیم. دو دکمه هم اضافه میکنیم که جاوا اسکریپتش را بعدا میافزاییم.
دکمهها را با استفاده از یک هوک که در تابع init فراخوانی شده، اضافه میکنیم.
اگر میخواهید این فیلد را به یک دسته متفاوت مانند custom post type اضافه کنید، باید رفرنس گروهبندی را با رفرنس اسلاگ دسته خودتان تعویض کنید؛ مثلا اگر یک تکسونومی ژانر ایجاد کردهاید باید این تابع را توسط کد زیر هوک کنید:
اگر فقط همین را اضافه کنیم، دکمهها را با وجودی که هنوز کار نمیکنند، در فرم خواهیم دید. برای آنکه دکمهها را به کار بیندازیم باید چند inline JavaScript از طریق هوک admin_footer به فوتر اضافه کنیم:
در این مرحله از افزودن فیلد تصویر به دسته ها در وردپرس، وقتی روی دکمه «افزودن تصویر» کلیک میکنیم، کتابخانه چندرسانهای وردپرس باز میشود تا یک تصویر را انتخاب کنیم. سپس ID تصویر انتخابی را میگیرد و در فیلد مخفی که آی دی category-image-id را دارد، قرار میدهد. این همان فیلدی است که ذخیره خواهیم کرد.
برای اینکه تصویر را به کاربر نمایش دهیم، از jQuery استفاده میکنیم تا div که آیدی category-image-wrappe دارد را با تصویر پیشنمایش پر کنیم. این کار ضروری نیست اما تجربه کاربری بهتری فراهم میکند.
به همین ترتیب، اگر کاربر روی دکمه حذف تصویر کلیک کند، فیلد مخفی پاک میشود و تصویر برداشته میشود.
۲- ذخیره کردن متا دیتا
اگر میخواهید بدانید چگونه فیلد تصاویر را به دسته ها اضافه کنیم؟ در مرحله بعدی، هنگامیکه کاربر بر روی «افزودن گروه جدید» کلیک میکند، باید بتوانیم متا فیلد تصویر را ذخیره کنیم. برای این کار، از هوک created_category استفاده میکنیم. اگر با تکسونومی متفاوتی کار میکنید، باید با هوک {created_{$taxonomy کار کنید که {taxonomy$} همان اسلاگ تکسونومی سفارشی شماست.
پس هوک به شکل زیر است:
و تابع هم بهصورت زیر است:
این تابع با ذخیره مقدار category-image-idfield ( که attachment ID را هم دارد) در category ID ، دقیقا مانند add_post_meta کار میکند.
۳- بهروزرسانی متا دیتا
حالا که یک گروهبندی را با تصویر مرتبطش ذخیره کردیم، شاید تصمیم بگیریم که تصویر را با کمک امکان افزودن فیلد تصویر به دسته ها در وردپرس عوض کنیم:
اطلاعات خود را وارد کرده و بروزرسانی کنید
ابتدا، باید همان فیلدهایی را که به فرم «افزودن گروهبندی جدید» اضافه کردیم به فرم «ویرایش گروهبندی» هم اضافه کنیم. هوکی که استفاده میکنیم category_edit_form_fields است که اگر نیاز دارید گروهبندی را با اسلاگ تکسونومی خودتان تعویض کنید.
این تابع، فیلدهای ما را به فرم ویرایش گروهبندی اضافه میکند:
این کد هم از جاوا اسکریپتی که قبلا اضافه کردیم، استفاده میکند تا بتوانیم تصاویر را آپلود یا حذف کنیم.
برای ذخیره فیلد آپدیت شده، edited_category را هوک میکنیم و از update_term_meta استفاده میکنیم؛ مانند قبل، میتوانید از {edited_{$taxonomy برای تکسونومی سفارشی خود استفاده کنید.
۴- نمایش تصویر در front end
تنها کاری که باقیمانده این است که تصویر را در طرح زمینه نمایش دهیم. برای این کار، به همان شیوهای که get_post_meta را برای post data استفاده میکنیم، باید get_term_meta را به کار بگیریم؛ مثلا:
افزودن آپلود تصویر به یک تکسونومی سفارشی
در پاسخ به سوال چگونه فیلد تصاویر را به دسته ها اضافه کنیم؟ روند کدینگ آپلود تصویر در یک تکسونومی سفارشی مانند آپلود تصویر در گروهبندی است که در مراحل بالا انجام دادیم اما در این مثال قصد داریم تا تصویر را به یک تکسونومی سفارشی مانند گروه دانلود Easy Digital Download اضافه کنیم. باز هم میتوانید این مراحل را برای هر تکسونومی سفارشی خود تغییر دهید.
کل کلاس به شکل زیر است:
همانطوری که میبینید این کد دقیقا همان روند کد مثال اول را دارد اما به تفاوتها هم توجه کنید. برای مثال، در ()init پیشوندها و پسوندهای اکشن باید بهجای اسلاگ گروهبندی به اسلاگ تکسونومی اشاره کنند؛ مثلا:
مشاهده میکنید که اکشن پیشوند download_category را دارد. این کار برای همه اکشنهای مرتبط به تکسونومی تکرار میشود و باید همه موارد این بخش را با اسلاگ تکسونومی سفارشی خودتان هم بهروزرسانی کنید.
افزودن فیلد تصویر به دسته ها در وردپرس
چگونه فیلد تصاویر را به دسته ها اضافه کنیم؟ گاهی لازم داریم که به دستههای خود نیز تصویر شاخص اضافه کنیم اما این امکان بصورت پیشفرض در وردپرس تعبیه نشده. به همین دلیل عملیاتی را در این آموزش انجام دادیم تا بتوانیم به نتیجه مورد نظر دست یابیم. با این امکان هم میتوانید تصویر را بیافزایید و هم میتوانید آن را حذف کنید.
در پایان، اگر نظر یا تجربهای در مورد افزودن فیلد آپلود تصویر به گروهبندی یا تکسونومی دارید، لطفا دیدگاهتان را بنویسید.