پلاگین نویسی شی گرا در وردپرس
در این آموزش ویدئویی شما با پلاگین نویسی شی گرا در وردپرس آشنا خواهید شد. شما می آموزید که چگونه از مفاهیم شی گرایی در ساخت یک پلاگین وردپرس استفاده کنید.
در ابتدا شما مزیت های استفاده از شی گرایی برای توسعه پلاگین های وردپرس آشنا خواهید شد.
سپس به صورت کامل یک ساختار شی گرا برای ساخت یک پلاگین از صفر توضیح داده می شود. در این ساختار یک boilerplate برای شروع ساخت یک پلاگین آموزش داده می شود که شما در ساخت همه پلاگین های خود می توانید از آن استفاده کنید.
آموزش پلاگین نویسی شی گرا در وردپرس شامل چه بخش هایی است؟
پلاگین نویسی شی گرا یکی از مباحث بسیار کاربردی و همین طور پیشرفته در پیاده سازی پلاگین های وردپرس می باشد. به دلیل استفاده زیاد از مفاهیم شی گرایی در توسعه پلاگین های وردپرس، تصمیم گرفتم تا به صورت کامل به این مبحث بپردازم.
فیلم آموزش پلاگین نویسی شی گرا در مدت زمان حدود ۱ ساعت و ۱۹ دقیقه برای شما دوست عزیز، تهیه شده است. این آموزش شامل بخش های زیر می باشد:
توضیح مفاهیم اصلی در پارادیم برنامه نویسی شی گرا
معرفی مزیت های پارادیم برنامه نویسی OOP نسبت Procedural
آشنایی با مفاهیم اصلی شی گرایی در برنامه نویسی مثل: Object و Class و Abstraction و Encapsulation و Data و Inheritance و Polymorphism
نکته مهم پیش از دیدن این فیلم آموزشی:
در نظر داشته باشید که فرض اولیه استفاده از این فیلم، این می باشد که شما با مفاهیم اصلی شی گرایی و همین طور نحوه پیاده سازی آن در PHP ، به طور کامل آشنایی دارید. در صورتی که آشنایی اولیه با پیاده سازی مفاهیم شی گرایی در PHP ندارید، قبل از شروع به دیدن این فیلم، می توانید از مرجع کاربردی آموزش شی گرایی در PHP در لینک زیر استفاده کنید.
معماری هسته وردپرس بر اساس چه معماری نرم افزاری است؟
آشنایی با ساختار Event-Driven Architecture در ساخت هسته وردپرس
آشنایی با روش برنامه نویسی رویداد محور (رویداد گرا) و مقایسه آن با روش برنامه نویسی شی گرا (شی محور)
آیا می توانیم از OOP یا همان برنامه نویسی شی گرا در معماری EDP یا همان Event-Driven Pattern استفاده کنیم؟
چرا برای توسعه پلاگین وردپرس به برنامه نویسی شی گرا نیاز داریم؟
استفاده از وردپرس در پروژه های بزرگ به عنوان یک فریم ورک برای ساخت وب اپلیکیشن
معرفی مدل MVC و مقایسه آن با ساختار Event-Driven Architecture
با اینکه ساختار هسته وردپرس به صورت MVC نیست، آیا می توان برای ساخت اپلیکیشن های تحت وب با کیفیت بالا از آن استفاده کرد؟
معرفی چند فریم ورک MVC برای توسعه پلاگین های وردپرس مانند: WP MVC و Themosis و Type Rocket
معرفی مزیت های استفاده از OOP در توسعه پلاگین های وردپرس. پلاگین نویسی شی گرا چه مزیت های برای یک برنامه نویس وردپرس دارد؟
بالا رفتن خوانایی کدها، توسعه پذیری و مقیاس پذیری آسان، ساده سازی روش های حل مساله و استفاده دوباره از کدها برای پیاده سازی های بعدی
حل مسائل بسیار پیچیده تر، خطایابی بسیار راحتر با وجود ماژولار شدن برنامه، انعطاف پذیری در پیاده سازی با روش مختلف با استفاده از Polymorphism
راحت تر بودن پشتیبانی و نگهداری از برنامه، استفاده از دیزاین پترن ها برای توسعه پلاگین، سازمان دهی منظم کدهای برنامه
پیشگیری از conflict ها به دلیل استفاده از namespace ها، سادگی و تمیزی کدهای نوشته شده، استفاده از متدهایی خارج از ساختار عمومی API های وردپرس
چگونه یک پلاگین وردپرس را به صورت شی گرا پیاده سازی کنیم؟
در این قسمت به صورت مرحله به مرحله با نحوه نوشتن کدهای یک پلاگین به صورت شی گرا آشنا می شویم. در واقع در این مرحله می آموزیم که چگونه با تشخیص و دسته بندی بخش های مختلف Problem Domain خود، از اشیا و متدهای مرتبط با آن ها در توسعه پلاگین استفاده کنیم.
مرحله اول: شناسایی توابع مورد نیاز برای پیاده سازی پلاگین
مرحله دوم: شکستن آن ها به گروه های منطقی قابل دسته بندی با هم
مرحله سوم: تبدیل این گروه های منطقی مرتبط با هم به کلاس ها
مرحله چهارم: استفاده از مفاهیم اصلی شی گرایی مثل Modularity و Abstraction در پیاده سازی کلاس ها
مرحله پنجم: ساختن کلاس های base در داخل پلاگین (یا استفاده از Interface ها)
مرحله ششم: گسترش دادن کارکردهای پلاگین با ارث بری از کلاس های base ساخته شده در پلاگین
مرحله هفتم: شناسایی ماژول های تکرار شونده در برنامه و تبدیل آن ها به Interface
مرحله هشتم: استفاده از مفاهیم چند ریختی برای پیاده سازی بخش های که باید از چندین شکل مختلف در آن ها استفاده کرد.
مرحله نهم: استفاده از Design Pattern ها برای توسعه پلاگین مثل دیزاین پترن Singletone
مرحله دهم: استفاده از getter ها و setter ها و همین طور magic accessor ها و mutator ها برای پیاده سازی پلاگین
مرحله یازدهم: اختصاص دادن نحوه دسترسی مناسب یا همان visibility مناسب به Property ها و Method های هر کلاس (استفاده درست از public و private و protected)
بررسی چند نکته مهم و کاربردی در پلاگین نویسی شی گرا در وردپرس
توضیح کامل کدهای یک boilerplate برای ساخت پلاگین های وردپرس
به دلیل اینکه در چندین پروژه مختلف، از این ساختار برای ساخت پلاگین استفاده کرده بودیم، تصمیم گرفتیم تا آن را به صورت یک boilerplate برای ساخت پلاگین وردپرس در گیت هاب منتشر کنیم.
در واقع این یک چارچوب برای توسعه پلاگین وردپرس به صورت شی گرا می باشد که شما می توانید از آن استفاده کنید و هر کدام از بخش های آن را به دلخواه حذف یا اضافه کنید.
در این بخش به طور کامل ساختار این boilerplate که به صورت شی گرا نوشته شده است، مورد بررسی قرار می گیرد و شما به توسط آن، خواهید توانست در آینده از شی گرایی برای توسعه پلاگین های خود به همین شکل یا روش های مشابه استفاده کنید.
در توضیح این Plugin Boilerplate موارد زیر مورد بررسی قرار گرفته اند:
آشنایی با ساختار فایل ها در دایرکتوری پلاگین وردپرس
نحوه استفاده از دیزاین پترن Singletone برای پیاده سازی فایل اصلی پلاگین
نحوه پیاده سازی کلاس Autoloader و نحوه کار آن برای اضافه شدن اتوماتیک فایل ها و کلاس های مورد نیاز پلاگین
پیاده سازی کلاس Constant برای استفاده از آن برای ثابت های مورد استفاده در کل پلاگین (ثابت های مرتبط با Path و URL)
پیاده سازی هوک های Activation و deactivation و uninstall به صورت شی گرا
معرفی کلاس های Activator و Deactivator و Uninstall
پیاده سازی کلاس Table برای ساخت جدول های اضافی در هنگام فعال کردن پلاگین و آشنایی با کلاس Info برای ایجاد تنظیمات پلاگین
آشنایی با کلاس های توابع کاربردی همچون کلاس های Date و Init_Functions و کلاس Utility
نحوه پیاده سازی و فراخوانی کلاس Core در پلاگین و فراخوانی کلیه کلاس های مورد نیاز پلاگین در آن
معرفی کلاس Loader برای فراخوانی هوک های action و filter به صورت کاملا شی گرا
معرفی کلاس I18n برای فراخوانی رشته های ترجمه در داخل پلاگین
آشنایی با کلاس های Admin_Hook و همین طور Public_Hook برای فراخوانی هوک های مورد نیاز در پنل ادمین و همین طور سمت کلاینت
پیاده سازی کلاس های Admin_Menu و Admin_Sub_Menu برای ایجاد منو و ساب منو های داخل پنل ادمین وردپرس
معرفی کلاس Initial_Value برای مقداردهی های اولیه در پلاگین
معرفی کلاس Router برای تعریف روت های پلاگین و همین طور آشنایی با Interface با نام Page_Handler برای رندر کردن صفحات مختلف در پلاگین
ایجاد دو نمونه آزمایشی برای پیاده سازی متد render و ساخت صفحات بر اساس روت های داده شده
آشنایی با ساختار استفاده شده برای ساخت template ها و صفحات HTML برای نمایش در سمت کاربر
تست موارد فوق در پلاگین و آشنایی با نحوه توسعه دادن این boilerplate برای استفاده در سایر پروژه ها
فیلم آموزش شی گرایی برای برنامه نویسی پلاگین در وردپرس
در ادامه می توانید فیلم پلاگین نویسی شی گرا در وردپرس را در زیر مشاهده فرمایید. در صورتی که نیاز به دانلود آن دارید، می توانید از لینک های پایین صفحه استفاده نمایید:
نتیجه گیری برای فیلم آموزش برنامه نویسی شی گرا در برنامه نویسی وردپرس
در این آموزش با نحوه پیاده سازی برنامه نویسی شی گرا در توسعه و ساخت پلاگین های وردپرس آشنا شدیم.
در ابتدا مزیت های برنامه نویسی شی گرا و همین طور ساختار معماری وردپرس آشنا شدیم. سپس فرا گرفتیم که می توانیم به راحتی از OOP برای توسعه وردپرس استفاده کنیم.
در ادامه با پلاگین نویسی شی گرا به صورت عملی آشنا شدیم و یک Boilerplate که برای توسعه پلاگین وردپرس به صورت شی گرا نوشته شده است را، به صورت کامل مورد بررسی قرار دادیم.
ممکن است به نظر شما بعضی از موارد درست نبوده و یا شما موارد بیشتری را بدانید که ما فراموش کرده ایم تا در مقاله استفاده از شی گرایی در کدنویسی وردپرس قرار دهیم.
اگر شما از این موارد آگاه هستید، حتما در بخش نظرات عنوان کنید تا آن را به این مقاله اضافه کنیم. در ضمن اگر این مقاله را مفید دیدید، حتما آن را به دوستان خود معرفی کرده یا در شبکه های اجتماعی به اشتراک بگذارید.
در ساخت و تهیه این مطلب آموزشی از مراجع زیر استفاده شده است. شما می توانید با مراجعه به آن ها در مورد پلاگین نویسی شی گرا، اطلاعات بیشتری را بدست آورید:
راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:
شما می توانید از طریق لینک های کاربردی زیر به سایر مقالات سایت که کاملا بصورت طبقه بندی شده وجود دارد، مراجعه نموده و از آن ها استفاده کنید:
سوال دوم آیا میتونید با این بویلرپلت پلاگین برای فروش در بازار جهانی بنویسیم؟ لایسنس این اجازه رو میده؟
سلام مجدد خدمت شما دوست عزیز
مثل سایر کارهای ما ایرانی، این بویلرپلیت عملا لایسنسی نداره. من هرجا از کدهای مشابه استفاده کردم، در کامنت ها سعی کردم به مرجع اشاره کنم. البته ساختار، ساختاری هست که کلا خودم استفاده می کنم
ساختار اولیه از روی کدهای Tom macfarlin گرفته شده اما بعدا با روش هایی که در سایت Carl Alexander گفته شده، تکمیل ترش کردم.
ضمن اینکه به مرور زمان و در پروژه های مختلف، چیزهای جدید تری بهش اضافه کردم. در واقع از دید من مشکلی برای استفاده نیست.
احتمالا در چند ماه آینده، اون رو داخل سایت رسمی وردپرس قرار بدم. اونجا احتمالا اگه مشکلی داشته باشه، خاطر نشان خواهند کرد.
حتما در همان صفحه گیت هاب، در مورد این مطلب اطلاع رسانی می کنم.
من متاسفانه تا حالا پلاگین برای فروش بین المللی ننوشتم و متاسفانه نمی دونم که آیا این کدها مشکلی خواهند داشت یا خیر. در مورد تم فارست که فکر می کنم مشکلی نباشه (با توجه به فعالیت هایی که بعضی دوستان داشته اند و نکاتی که گفتند)
به هرحال تا یک بار آدم برای این مارکت ها، کارش رو submit نکنه، متوجه مشکلات نخواهد شد.
حتما در چند ماه آینده، این کار رو می کنم و به اطلاع شما هم می رسونم.
ارادتمندم
سپاس از کار زیباتون فقط یه مورد من در مورد دیزاین پترن ها خوندم اینجور گفته میشد که دیگه از سینگلتون به عنوان یک آنتی پترن یاد میشه و استفاده از اون توصیه نمیشه. نظر شما در این مورد چیه؟
در نهایت شما ورژن لایت رو پیشنهاد میدید یا همین ورژنی که آموزش دادید؟
مجدد تشکر میکنم از انتشار دانشتون
سلام به شما دوست عزیز
دقیقا همین طور هست که می فرمایید. عملا سینگلتون با استفاده نابجا، می تونه آنتی پترن تلقی بشه. در واقع مهم ترین اصل شی گرایی که Inheritance هست، زیر سوال می بره.
اینکه در اینجا از singleton استفاده شده، فقط به این دلیل بوده که فقط می خواستم یک نمونه از اون در هنگام فراخوانی هوک های مختلف در وردپرس، از اون ساخته بشه (این امر رو مثلا وقتی از هوک ها استفاده نمی کنید، می تونید مشاهده کنید. مثلا یه کار رو می خواهید در یک فایل text لاگ کنید. اگه اون رو به هوک درستی متصل نکنید، بسته به صفحه ای که در اون هستید، ممکن هست لاگ دو یا سه بار نوشته بشه. در واقع فایل اصلی پلاگین هم، همین شرایط رو داره و برای اینکه نمونه های بیشتری ازش ساخته نشه، خیلی ها از این پترن برای هندل کردن این موضوع استفاده می کنند)، وگرنه این امر دست خود شماست. عملا می تونید از سینگلتون استفاده نکنید.
بنابراین این امر در ساخت یک نمونه از پلاگین، عملا سلیقه ای هست.
در مورد سوال دوم، این فیلم برای دو سال پیش هست. من جای Repository ها رو عوض کردم و کلا این بویلرپلیت در حال حاضر هم، بر مبنای همون سیستم لایت داره جلو میره.
خیلی از مسائل، در زمان قدیم در اون رعایت نمی شد مثل Dependency injection که الان همه رو سعی کردم رعایت کنم. البته یه مقدار به نظرم سرعت توسعه رو پایین میاره اما خب به هرحال، واقعا منظم هست و ساختار داره.
آدرس فعلی Repository اصلی، این هست: OOP WordPress Plugin Boilerplate
متاسفانه وقت نکردم داکیومنت کاملی براش تهیه کنم. امیدوارم به زودی وقت کنم و انجامش بدم.
بازم ممنونم که وقت ارزشمند خودتون رو گذاشتید تا برای ما پیام ارسال کنید
سپاس فراوان
سلام وعرض خسته نباشید
ازoop تو پروژه هام استفاده میکردن اما کاری که شما انجام دادید به مراتب حرفه ای تر هستش
واقعا لذت بردم از boilerplate که قرار دادید . خدا خیرتون بده
ممنونم بابت این آموزش عالی
سلام به شما دوست عزیز
نظر لطف شماست. این فیلم یه مقدار قدیمی هست و از اون تاریخ به بعد، کلی تغییرات روی اون دادم. خصوصا اون زمان خیلی با اصول SOLID کار نکردم و مثلا اصلا Dependency Injection رو رعایت نکردم. اما در ورژن های جدید، ساختار خیلی بهتر شده.
به زودی یه فیلم از ساختار جدید هم تهیه می کنم و همین جا قرار میدم.
خیلی خیلی متشکرم بابت پیام های محبت آمیز که فرستادید. سپاس فراوان
این plugin sample که گذاشتید واقعا عالیه و بی نهایت ارزشمند
ممنون
سلام به شما دوست عزیز
ممنون بابت پیامی که گذاشتید. خوشحالم که این boilerplate مورد نظر شما قرار گرفته.
یک نکته: به دلیل اینکه استفاده از کلاس loader برای run کردن action ها و filter ها باعث پیچیدگی بیش از حد پلاگین می شد، یه ورژن آسان تر که دیگر نیاز نیست از loader برای آن ها استفاده شود، در گیت هاب گذاشتم. در صورت نیاز می توانید از آن استفاده کنید:
لینک WP plugin boilerplate – light version
از لطف شما بسیار ممنون و سپاسگزارم