آموزش افزونه ووکامرس - نسخهی قابل چاپ +- باشگاه کاربران روماک (https://forum.romaak.ir) +-- انجمن: انجمن طراحی سایت و برنامه نویسی (https://forum.romaak.ir/forumdisplay.php?fid=78) +--- انجمن: اسکریپت ها و سیستم های مدیریت محتوا (https://forum.romaak.ir/forumdisplay.php?fid=37) +---- انجمن: ووکامرس (https://forum.romaak.ir/forumdisplay.php?fid=140) +----- انجمن: آموزشهای ووکامرس (https://forum.romaak.ir/forumdisplay.php?fid=142) +----- موضوع: آموزش افزونه ووکامرس (/showthread.php?tid=4229) |
آموزش افزونه ووکامرس - سحر - ۹۶/۹/۲۶ در این آموزش قصد داریم به موارد اصولی پیرامون ساخت یک افزونه ووکامرسی بپردازیم. هدف ما در این آموزش این است که شما را با اصول و قواعد طراحی یک افزونه برای فروشگاه ساز woocommerce آشنا کنیم تا اگر قصد طراحی افزونه ای برای این فروشگاه ساز را دارید، بتوانید کارتان را به سادگی و با سرعت بیشتری آغاز کنید.
افزونه های ووکامرس با هدف توسعه امکانات فروشگاه ساز ووکامرس نوشته می شوند و در کلیه اصول طراحی، در واقع پیش از هر چیز از استاندارد های وردپرس تبعیت می کنند. اگر قصد دارید امکانات فروشگاه ساز ووکامرس را گسترش دهید و برای آن افزونه های مختلفی طراحی کنید، ولی نمی دانید که کار را از کجا شروع کنید، این آموزش مخصوص شماست. در انتهای این آموزش با استاندارد های و اصول و قواعد طراحی یک افزونه ووکامرسی آشنایی پیدا می کنید و می توانید طراحی یک افزونه ووکامرسی را به صورت استاندارد آغاز کنید. نامگذاری فایل افزونه مانند سایر افزونه های وردپرس، نام فایل اصلی افزونه ووکامرسی شما، باید از نام افزونه و نامی که برای فولدر آن انتخاب شده تبعیت کند. مثلا اگر نام فولدر افزونه را new-plugin گذاشته باشید، نام فایل اصلی افزونه new-plugin.php خواهد بود. افزونه Text domain در وردپرس از text domain جهت بومی سازی افزونه ها و قالب وردپرس استفاده می کنیم. اگر با text domain آشنایی ندارید می توانید در لینک زیر درباره آن مطالعه کنید. دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
نام text domain افزونه ووکامرسی شما نیز می بایست از نام فولدر آن تبعیت کند. مثلا افزونه ای با نام فولدر new-plugin باید text domain ای معادل new-plugin داشه باشد. در اینجا نباید از آندرلاین (آندراسکور) استفاده کنید. بومی سازی با توجه به اینکه زبان اصلی وردپرس، انگلیسی است، تمامی رشته های درج شده در افزونه ووکامرسی شما نیز میبایست به زبان انگلیسی در کد افزونه درج شوند. این مسئله حتی در زمانی که قصد ایجاد یک افزونه برای استفاده به زبان فارسی در ایران را داشته باشید نیز صادق است. در حالتی که می خواهید افزونه را به زبانی به غیر از زبان انگلیسی استفاده کنید، باید افزونه را به زبان انگلیسی طراحی کرده و سپس با روش ترجمه استاندارد، فایلهای ترجمه مربوط به زبان دلخواهتان را به آن بیافزایید. مثلا fa_IR.mo و … پیروی از استاندارد های کدنویسی وردپرس همانطور که در ابتدای این آموزش هم به آن اشاره کردیم، پلاگین های ووکامرس، پیش از هرچیز از استاندارد های کدنویسی PHP در وردپرس تبعیت می کنند. بنابراین پیش از شروع به کدنویسی افزونه تان، بهتر است راهنمای کدنویسی استاندارد در وردپرس را در لینک زیر مطالعه کنید. دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
این استانداردها شامل مواردی از جمله فاصله ها و تورفتگی ها، کروشه ها، تگ های کوتاه PHP، شرط های Yoda، استانداردهای نامگذاری و موارد مشابه شده و باعث میشوند که کد شما توسط سایر توسعه دهندگان به خوبی قابل خواندن، درک و در صورت نیاز توسعه باشد. همچنین پیروی از این استاندارد ها باعث میشود که از اتفاق افتادن اشتباهات ابتدایی در برنامه نویسی جلوگیری شده و کیفیت کدنویسی شما برای ووکامرس، افزایش پیدا کند. ذخیره اطلاعات و استفاده از جداول دلخواه در دیتابیس در ساختن یک افزونه ووکامرسی تا حد ممکن باید از ایجاد جداول جداگانه در دیتابیس پرهیز شود. همیشه، تا جایی که post type ها، taxonomy و تنظیمات وردپرس به شما اجازه میدهند، بهتر است از همین موارد برای براورده کردن نیازهای افزونه تان استفاده کنید. برای ذخیره اطلاعات میتوانید از راهنمای مختصر زیر بهره بگیرید:
جلوگیری از نشت اطلاعات برای اینکه از نشت ناخواسته اطلاعات جلوگیری شود، باید کاری کنیم که افزونه ووکامرسی در صورت دسترسی مستقیم، در برابر چنین مواردی ایمن شده باشد. بنابراین برای جلوگیری این مسئله، بایستی کد زیر را به ابتدای فایل های PHP خود اضافه کنید: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
ساخت فایل Readme همه افزونه ها لازم است که دارای یک فایل readme استاندارد طبق آنچه در مستندات وردپرس به آن اشاره شده، باشند. در افزونه های ووکامرس، لازم است که دو آیتم دیگر علاوه بر آیتم های استاندارد موجود در readme وردپرس، به این فایل اضافه شوند:
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
اطلاعات افزونه
هر افزونه بایستی شامل اطلاعاتی از جمله نام افزونه، آدرس افزونه، توضیحات، نام نویسنده، آدرس نویسنده (URI) و … باشد. این اطلاعات را می توانید به فرم زیر به فایل اصلی افزونه خود اضافه کنید:
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در مثال بالا باید مواردی از قبیل نام افزونه، آدرس افزونه، نام نویسنده و … را با اطلاعات خود جایگزین کنید. البته درج همه موارد بالا ضروری نبوده و میتوان از برخی از موارد صرف نظر کرد اما در نقطه مقابل همین قضیه، حالتی است که مایل باشید اطلاعات اضافه دیگری را به سربرگ افزونه خود بیافزایید. طبعا انجام این کار هم مجاز است و شما میتوانید اطلاعات مورد نیازتان را به ادامه این بخش اضافه کنید. اما به طور کلی بهتر است که سعی کنید از الگوی بالا پیروی کنید.
استفاده از رابط کاربری ووکامرس و وردپرس
با توجه به گستردگی افزونه های ووکامرس و وردپرس، حفظ یکپارچگی در آنها از اهمیت خاصی برخوردار است. همه افزونه ها میبایست الزاما برای به نمایش گذاشتن بخش های مختلف خود از رابط کاربری وردپرس و ووکامرس بهره گرفته و برای بارگذاری اطلاعات از API ارائه شده در سیستم وردپرس / ووکامرس استفاده کنند.
وردپرس و ووکامرس هر دو به شما اجازه اضافه کردن منوهای دلخواه به مجموعه منوهای موجود در سیستم را میدهند. حال علیرغم اینکه شما در انتخاب محل منو برای افزونه خود آزاد هستید اما همیشه باید محل قرارگیری منوی مربوط به افزونه خود را با دقت و توجه ویژه و بر اساس نوع کارکرد افزونه خود انتخاب کنید.
به طور کلی:
درج توضیحات در کد (comment)
همه توابع استفاده شده در افزونه شما میبایست دارای توضیحات لازم باشند. وجود کامنت های مناسب هم به شما و هم به افراد دیگری که ممکن است بخواهند افزونه شما را توسعه داده و یا باگ های آن را برطرف کنند، کمک خواهد کرد. همیشه به یاد داشته باشید که 6 ماه دیگر، حتی خودتان هم ممکن است منطق خود را در پیاده سازی یک تابع به یاد نداشته باشید. بنابراین وجود کامنت های مناسب در محل های مناسب، یک امر کاملا ضروری و حائز اهمیت خواهد بود.
بررسی فعال بودن ووکامرس
عموما وقتی یک افزونه ووکامرسی طراحی میکنیم، این افزونه تنها در زمان فعال بودن ووکامرس است که باید عملی را انجام دهد. بنابراین کاری که میبایست همیشه انجام آن را به خاطر داشته باشیم، بررسی فعال بودن ووکامرس است:
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در کد بالا هر محتوایی که در خط 5 قرار دهید. تنها زمانی اجرا میشود که افزونه ووکامرسی روی سایت نصب شده و فعال باشد.
تست کردن با WP_DEBUG
همیشه در زمان توسعه یک افزونه حالت دیباگ را در وردپرس فعال کنید. در این حالت همه هشدار ها و مشکلات احتمالی افزونه تان را قبل از ورود به حالت production مشاهده می کنید و فرصت دارید که آنها را پیش از ورود به مرحله اجرایی، برطرف کنید.
جدا کردن منطق برنامه نویسی از نمای آن
همیشه سعی کنید تا حد ممکن، منطق برنامه نویسی تان را از نمای ظاهری آن جدا کنید. مثلا سعی کنید کلاس تنظیمات افزونه از کلاسی که خروجی ها و نمایش اطلاعات را در افزونه کنترل میکند جدا باشد. پیروی از چنین حالتی، هم برنامه نویسی شما را قابل درک تر می کند و هم باعث میشود توسعه، ویرایش و انجام سایر عملیات روی افزونه شما آسان تر باشد.
استفاده از Transient ها
اگر افزونه شما جهت دریافت برخی اطلاعات به API های مختلفی متصل میشود، برای سرعت بخشیدن به درخواست های آینده و کاهش بار، میتوانید از ذخیره اطلاعات در transient ها استفاده کنید. ترنزینت ها میتوانند اطلاعات را برای مدت مشخصی ذخیره کرده و در اختیار شما قرار دهند.
ذخیره لاگ اطلاعات
ممکن است برای رفع اشکالات برنامه نویسی افزونه بخواهید لاگ فعالیت های آن را در محلی ذخیره کنید تا در آینده قابل دسترس و بررسی باشد. این عمل، عملی بسیار مناسب است به شرطی که در آن دو شرط را رعایت کنید. اول اینکه کاربر باید بتواند تصمیم بگیرد که مایل است در چنین عملی شرکت کند یا خیر. (یعنی تنها با اجازه کاربر، اطلاعات دیباگ سیستمش را ذخیره و استفاده کنید) و دوم اینکه برای پیاده سازی این عمل از کلاس WC_Logger استفاده کنید تا به این شکل اطلاعات برای خود کاربر در صفحه وضعیت سیستم قابل دسترس باشد.
با استفاده از کد زیر می توانید لینکی در اختیار کاربر افزونه قرار دهید که با استفاده از آن بتواند لاگ های افزونه ووکامرسی مورد نظر را مشاهده کند:
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
فراموش نکنید که برخی اطلاعات موجود در کد بالا را باید با موارد مربوط به افزونه ووکامرسی خود جایگزین کنید. یکپارچه سازی با سرویس ها اگر افزونه شما برای کارکرد نیاز به اتصال به سرویس خاصی دارد، بهتر است که این مسئله را در قالب یک نوتفیکیشن به کاربر گوشزد کنید. (مثلا درگاه های پرداخت، افزونه های حمل و نقل و …) مثلا می توانید در بالای صفحه مدیریت پیامی اضافه کنید که به کاربر میگوید: “افزونه درگاه پرداخت x با موفقیت نصب و فعال شده است. برای تکمیل مراحل، لازم است که اطلاعات پذیرندگی خود را به افزونه بیافزایید” یا موارد مشابه … مثلا به تصویر زیر توجه کنید: این تصویر، هشداری است که پس از نصب افزونه ووکامرسی یکپارچه سازی با میل چیمپ به شما نمایش داده میشود. برای نمایش نوتیفیکیشنی که در تصویر بالا مشاهده می کنید، از کد زیر استفاده شده : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
اسکلت اصلی یک افزونه ووکامرس خوب، حالا که به این قسمت رسیدیم، یعنی اطلاعات کافی برای شروع نوشتن یک افزونه ووکامرسی را کسب کرده ایم و میتوانیم کارمان را شروع کنیم. همانطور که گفتیم، پیش از هر چیز بررسی می کنیم که ووکامرس فعال و در دسترس باشد. سپس چک می کنیم که نامی که برای کلاس افزونه خود انتخاب کرده ایم، تکراری نبوده و از قبل در سیستم تعریف نشده باشد : *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
طبعا نیازی به تاکید به این نکته نیست که نام کلاسی که در خط دوم درج شده با توجه به نامی که شما انتخاب می کنید تغییر خواهد کرد. حالا برای اینکه امکان بومی سازی استاندارد را برای افزونه مان فراهم کنیم لازم است که text domain آن را بارگذاری کنیم: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در کد بالا عبارت wc-your-textdomain را با text domain ای که برای افزونه خود در نظر گرفته اید جایگزین کنید. در ادامه کلاسی برای افزونه تعریف میکنیم و توابع مورد نیاز را به آن اضافه میکنیم، به این شکل نیازی نیست که نگران همنام بودن توابع موجود در افزونه با سایر توابع هسته وردپرس یا دیگر توابع تعریف شده توسط سایر افزونه ها و … در سایت باشیم. در این مرحله action hook های مختلفی در اختیار ما هستند که میتوانیم اعمال مختلفی را در زمان های مختلف در افزونه مان با استفاده از آنها انجام دهیم. در کد پایین ابتدا در کلاس مربوط به افزونه، کلیه اکشن های مورد نیاز را مورد استفاده قرار داده ایم و در پایان یک instance جدید از کلاسمان ایجاد کرده ایم و آن را به گلوبال ها افزوده ایم: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
البته به وضوح در کد بالا، ما نام مناسبی برای کلاس افزونه انتخاب نکرده ایم و این مسئله تنها جنبه نمایشی داشته است. بنابراین شما مثل ما نباشید و نام مناسبی روی کلاس افزونه تان قرار دهید. جمع بندی و بالاخره به پایان این آموزش رسیدیم. فکر میکنم اگر تازه به دنیای ساخت افزونه برای ووکامرس قدم گذاشته باشید، این مقاله، اطلاعات مناسبی را برای شروع کار در اختیار شما قرار داده باشد. با آنچه در این آموزش به آن پرداختیم، تقریبا آماده شروع به برنامه نویسی افزونه اختصاصی خودتان هستید. برای پیشرفت در توسعه افزونه های ووکامرس، تا جایی که میتوانید، سورس افزونه های مختلفی که برای ووکامرس نوشته شده اند را مطالعه و بررسی کنید. همیشه به یاد داشته باشید که تبحر در برنامه نویسی تنها از طریق تمرین حاصل میشود. بنابراین اگر در ابتدای کار، هنوز کمی نامطمئن هستید و این آموزش برایتان اطلاعات جدید زیادی با خود به همراه داشته، اصلا نگران نباشید چرا که با تمرین و مطالعه، کدنویسی و رفع اشکال، به زودی به برنامه نویسی برای ووکامرس و توسعه امکانات آن مسلط خواهید شد و آنچه تا این لحظه کمی برایتان عجیب و غریب بوده، تبدیل به دنیایی شیرین میشود که خودتان مایل به پیشرفت دائمی در آن خواهید بود. |