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

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

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

لحظه یورکا من زمانی فرا رسید که مشتری از من خواست برای او یک سیستم ردیابی سفارش بسازم. از لحاظ تاریخی، او سفارشات تجهیزات پزشکی را از نمایندگان می‌گرفت و تمام کارهای اداری خود را به صورت دستی انجام می‌داد. سپس تمام روز را با تلفن می‌گذراند و به تماس‌های نمایندگان پاسخ می‌دهد تا سفارش‌های جدید ارسال کند یا وضعیت یک سفارش موجود را بررسی کند.

خب، او با ایجاد یک وب‌سایت که می‌توانست تمام سفارش‌هایش را در آن وارد کند و مشتریانش می‌توانند وضعیت آن‌ها را به میل خود بررسی کنند و حتی به‌روزرسانی‌های ایمیل را دریافت کنند، به دنبال ایجاد یک وب‌سایت بود. ایده این بود که او زمان بیشتری برای رشد واقعی کسب و کار خود داشته باشد، به جای اینکه تمام روز را با تلفن سپری کند و کارهای مدیریتی را انجام دهد.

انواع پست سفارشی

پاسخ به مشکل او در قدرت انواع پست سفارشی نهفته است. سایت‌های استاندارد وردپرس دارای دو نوع پست هستند: پست‌ها و صفحات، اما می‌توانید هر تعداد که می‌خواهید اضافه کنید. حتی ممکن است برخی از مضامین یا افزونه‌هایی را در سایت خود داشته باشید که از مواردی مانند رویدادها، فهرست‌های املاک، محصولات یا اسلایدرها پشتیبانی می‌کنند.

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

من به روند ایجاد یک نوع پست سفارشی نمی پردازم، زیرا قبلاً در آموزش دیگری به آن پرداختم: ثبت انواع پست سفارشی.

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

جعبه‌های متا سفارشی وارد شدند. متا باکس‌های سفارشی به شما این امکان را می‌دهند که “پنجره‌های” جدیدی در ویرایشگر خود ایجاد کنید تا قطعات خاصی از اطلاعات را ذخیره کنید. بنابراین در حالی که ویرایشگر پست یک جعبه بزرگ برای محتوای پست شما دارد، ممکن است برای نوع پست سفارشی خود به آن نیاز نداشته باشید، همانطور که من با نوع پست سفارشی سفارشاتم نیازی به آن نداشتم. به این ترتیب، زمانی که نوع پست سفارشی را ثبت کردم، ویرایشگر را خاموش کردم، به طوری که همانطور که در زیر خواهید دید، کاملاً کنترل صفحه ورود داده را در دست داشتم.

جعبه های متا سفارشی

Custom Meta Boxes است اسکریپتی که فرآیند ایجاد این متا باکس ها را بسیار آسان می کند. علاوه بر این، برخی از انواع فیلدهای پیچیده تر (مانند انتخابگرهای رنگ، انتخابگر تاریخ و ویرایشگرهای WYSIWYG) را گرفته و همه کدنویسی ها را برای شما انجام داده است، به طوری که تنها کاری که باید انجام دهید این است که نوع هر فیلد را دیکته کنید. به طور جادویی ظاهر شود.

گنجاندن آن در قالب یا افزونه خود فرآیند بسیار آسانی است. تنها کاری که باید انجام دهید این است که فایل‌ها را از مخزن GitHub دانلود کنید.  و آنها را در طرح زمینه یا ساختار پوشه افزونه خود کپی کنید. برای سازماندهی بهتر، توصیه می کنم فایل ها را در یک کتابخانه یا پوشه شامل قرار دهید. در افزونه‌هایم، همه فایل‌ها را در /wp-content/plugins/my-plugin/includes/metabox/ آپلود می‌کنم.

وقتی همه فایل‌ها و پوشه‌ها در مکان انتخابی شما آپلود شدند، تنها کاری که باید انجام دهید تا آنها را “فعال کنید” و برای استفاده در دسترس قرار دهید این است که init.php را از افزونه خود اضافه کنید. به عنوان مثال، در مثال من، تابع زیر در فایل افزونه اصلی برای فراخوانی init.php در پوشه /includes/metabox/ گنجانده شده است:

function be_initialize_cmb_meta_boxes() {
	if ( !class_exists( 'cmb_Meta_Box' ) ) {
		require_once('includes/metabox/init.php');
	}
}

add_action('init', 'be_initialize_cmb_meta_boxes', 9999);

اکنون در موقعیتی هستید که می توانید از عملکردی که اسکریپت ارائه می دهد استفاده کنید. example-functions.php مکانی عالی برای شروع یادگیری نحوه کار اسکریپت است. این نمونه ای از نحو مورد نیاز برای گنجاندن هر نوع فیلدی را که اسکریپت اجازه می دهد ارائه می دهد. انواع فیلدهایی که می توانید از بین آنها انتخاب کنید عبارتند از:

  • عنوان (برای سازماندهی کادرهای متا خود در داشبورد)
  • متن (کوچک، متوسط ​​و بزرگ)
  • انتخابگر تاریخ (استاندارد یا مهر زمانی UNIX)
  • ارز
  • منطقه متن (کوچک و بزرگ)
  • کشویی
  • دکمه های رادیویی (داخلی و استاندارد)
  • چک باکس (تک و چندتایی)
  • ویرایشگر WYSIWYG
  • انتخاب‌کننده‌های طبقه‌بندی (کشویی، کادرهای انتخاب یا دکمه‌های رادیویی)
  • آپلودکننده فایل
  • فهرست فایل

شما فقط باید تصمیم بگیرید که چه اطلاعاتی را می‌خواهید ضبط کنید و کدام نوع فیلد در هر مورد بهترین است.

برای نشان دادن این اسکریپت به شما، از مثال ساده‌تری نسبت به سیستم سفارشی که قبلاً ذکر کردم استفاده می‌کنم، زیرا پیچیده‌تر است. اخیراً افزونه‌ای نوشتم که در آن یک سیستم هشدار ساده ایجاد می‌کردم، که در آن مدیر می‌تواند عنوان هشدار، اولویت آن، توضیحات هشدار و نحوه حل آن را مشخص کند.

برای انجام این کار، از عنوان پست برای عنوان هشدار، از دکمه‌های رادیویی درون خطی برای تنظیم اولویت و ویرایشگرهای WYSIWYG برای نوشتن توضیحات و وضوح (که امکان ویرایش غنی آسان، مانند فهرست‌های گلوله‌ای و قالب‌بندی متن را فراهم می‌کند) استفاده کردم.< /p>

تابع زیر همه کدهایی است که به آن دست می یابد: توجه داشته باشید که از فرمت فایل example-functions.php پیروی می کند. من هر قسمت از کد را بعد از:

شرح خواهم داد

function twpb_alerts_metaboxes( $meta_boxes ) {
	$prefix = 'twpb_alert_'; // پیشوند برای همه فیلدها
	$meta_boxes[] = آرایه(
		'id' => 'alert_metabox'،
		'title' => 'اطلاعات هشدار'،
		'pages' => آرایه ('twpb_alerts')، // نوع پست
		'context' => 'عادی'،
		'اولویت' => ​​'بالا'،
		'show_names' => true، // نمایش نام فیلدها در سمت چپ
		'fields' => آرایه(
			آرایه(
				'name' => 'اولویت',
				'desc' => ''،
				'id' => پیشوند $. 'اولویت'،
				'type' => 'radio_inline',
				'Options' => آرایه(
					آرایه ('name' => 'بالا', 'value' => 'بالا'، )
					آرایه('name' => 'Medium', 'value' => 'Medium', ),
					آرایه('name' => 'پایین', 'value' => 'کم'، ),
				)
			)
			آرایه(
				'name' => 'شرح موضوع',
				'desc' => 'توضیحات مربوط به موضوع را وارد کنید.',
				'id' => پیشوند $. 'شرح'،
				'type' => 'wysiwyg',
				'options' => آرایه('textarea_rows' => 5, ),
			)
			آرایه(
				'name' => 'قطعنامه پیشنهادی',
				'desc' => 'به کاربران اطلاع دهید که چگونه می توانند مشکل را حل کنند.',
				'id' => پیشوند $. 'وضوح'،
				'type' => 'wysiwyg',
				'options' => آرایه('textarea_rows' => 5, ),
			)
		)
	)

	بازگشت $meta_boxes;
}
add_filter( 'cmb_meta_boxes', 'twpb_alerts_metaboxes' );

در خط 2، من یک پیشوند منحصر به فرد برای فیلدهای سفارشی تنظیم کردم تا از تضاد با سایر افزونه ها جلوگیری شود، و در خط 4، یک شناسه منحصر به فرد به متاباکس دادم که در نوع پست سفارشی در داشبورد ظاهر می شود. خط 5 عنوان متاباکس را تعیین می کند و خط 6 انواع پست های سفارشی را برای نمایش این متاباکس ها تعیین می کند. از آنجایی که این یک آرایه است، می‌توانید آن را در هر تعداد پستی که دوست دارید، شامل پست‌ها و صفحات در صورت تمایل قرار دهید.

خط 10 آرایه فیلدهایی را که می خواهم ایجاد کنم شروع می کند. در این مثال، فقط سه فیلد وجود دارد (خطوط 11-21، 22-28 و 29-35). هر فیلد شامل اطلاعات اولیه در مورد اینکه فیلد چیست، یک شناسه منحصر به فرد برای آن، و یک توضیحات، و همچنین برخی از گزینه ها در صورت لزوم است.

سپس خط 39 متاباکس‌ها را نمایش می‌دهد و خط 41 به اسکریپتی که در ابتدا آپلود کرده‌ایم قلاب می‌کند تا کار کند.

نتیجه؟

پس این چه شکلی است؟ خوب، در پنجره ویرایشگر، با چیزی شبیه به این مواجه خواهید شد:

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

نمایش اطلاعات

اطلاعات در حال حاضر در برابر هر پست در پایگاه داده ذخیره می شود. اما اگر آن را فراخوانی نکنیم، فقط در پایگاه داده می ماند و بی فایده می ماند. برای نمایش اطلاعات، باید از تابع get_post_meta استفاده کنیم، که متای پست را برای یک پست معین از پایگاه داده بازیابی می کند.

برای گرفتن این مثال ساده، می‌توانیم از تابع get_post_meta در سه نمونه جداگانه استفاده کنیم تا هر قسمت از اطلاعاتی که ذخیره کرده‌ایم (اولویت، توضیحات و وضوح) را وارد کنیم.

اولویت: ID, 'twpb_alert_priority', true ); ?>

توضیح

ID, 'twpb_alert_description', true ); ?>

رزولوشن

ID, 'twpb_alert_resolution', true ); ?>

در هر مورد، شناسه پست و شناسه منحصربه‌فرد هر بخش از فراداده‌ای را که می‌خواهیم بازیابی کنیم، ارسال می‌کنیم (به یاد داشته باشید که اینها را در تابع قبلی تنظیم کرده‌ایم).

سپس نتیجه ای را در قسمت جلویی در امتداد خطوط زیر ایجاد می کند:

آن را ادامه دهید

این یک مثال بسیار ساده بوده است، اما فقط با کمی تخیل، می توانید ببینید که چقدر می تواند قدرتمند باشد. برای بازگشت به مثال اصلی من از سیستم ردیابی سفارش، از آن افزونه برای ثبت اطلاعات بیمار (نام، آدرس، تاریخ تولد) و اطلاعات سفارش (اقلام سفارش داده شده، قیمت، شماره سفارش، شرکت حمل‌ونقل، شماره پیگیری، یادداشت‌های سفارش استفاده می‌شود. و اسناد سفارش، مانند فاکتورها). همراه با اعلان های ایمیل، می تواند ابزار بسیار جامعی باشد.

وقتی شروع به کشف ویژگی‌های قدرتمندی مانند این می‌کنید که در وردپرس تعبیه شده‌اند، که در ابتدا می‌تواند کمی سخت به نظر برسد، متوجه می‌شوید که چقدر می‌تواند قدرتمند باشد. امیدواریم ابزارهایی مانند جعبه های متا سفارشی شما را تشویق کنند شیرجه بزنید و شروع به توسعه سایت های بسیار سفارشی خود کنید.

حتما بخوانید : API بازنویسی وردپرس
خروج از نسخه موبایل