ساختار یک پلاگین وردپرس

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

چگونه یک پلاگین وردپرس کار میکند

پس از قرار دادن یک پلاگین وردپرس در پوشه”wp-content/plugins /” ، این پلاگین باید به طور خودکار برای نصب در دسترس باشد.
هنگامی که یک پلاگین “فعال” می شود، به وردپرس می گوید که کمی از کد شما را بر روی “هر” صفحه بارگذاری کند(از جمله صفحه ادمین). به این دلیل است که اگر تعداد زیادی پلاگین های فعال شده داشته باشید، به علت بالا بودن تعداد کد ها، نصب وردپرس شما ممکن است بسیار آهسته باشد.
از آنجا که وردپرس، زمانی که پلاگین فعال می شود به طور خودکار کدهای شما را بارگذاری می کند، می توانید از این فرصت با ضربه زدن به Application Program Interface (API) پلاگین وردپرس، استفاده کنید. شما همچنین می توانید به تگ های قالب وردپرس دسترسی پیدا کرده و یا یکی مخضوض به خودتان ایجاد نمایید.
اگر می خواهید در محتوای پست هاو یا نظرات تغییر ایجاد کنید، پیشنهاد می کنم مقاله ی حلقه ی وردپرس را بخوانید. حلقه ی وردپرس، حلقه ای است که پست های شما را نمایش می دهد. برخی از تگ های قالب در خارج از این حلقه کار خواهند کرد، بنابراین ضروری است که بدانید کد شما دقیقا کجا در حال اجرا است. شما می توانید این کار را با استفاده از اکشن ها و فیلترها، که در پست های بعدی توضیح داده خواهد شد، کنترل کنید.

ساختار پوشه

تمامی پلاگین های وردپرس در دایرکتوری نصب خواهند شد. برخی از پلاگین نویسان به سادگی از یک فایل PHP برای پلاگین خود استفاده می کنند، اما من توصیه می کنم که همیشه یک پوشه برای ذخیره پلاگین خود ایجاد کنید.
من به طور معمول پلاگین خود را در پوشه ای با این ساختار، ساختاربندی می کنم:
• نام پوشه ی پلاگین(نام پلاگین شما بدون هیچ فاصله یا کاراکتر ویژه ای)
1. فایل PHP پلاگین اصلی
2. پوشه ی JS (برای فایل های جاوا اسکریپت)
3. پوشه ی CSS (برای فایل های StyleSheet)
4. پوشه ی PHP (برای باقی فایل هایی که شامل PHP می شوند)

به عنوان مثال، در اینجا یک ساختار نمونه که خودم ایجاد کرده ام وجود دارد:

• devlounge-plugin-series
o devlounge-plugin-series.php
o js
o css
o php
می خواهم فقط فایل PHP اصلی را در داخل پوشه devlounge-plugin-series گذاشته، و فایل های دیگر را هم در پوشه مربوطه به خودشان قرار دهم. این ساختار میتواند به دیگر پلاگین نویسان، که کدهای شما را می بینند برای تشخیص اینکه کدام فایل، فایل اصلی پلاگین است و فایل های پشتیبانی در کجا قرار دارند، کمک کند.
وردپرس همچنین قرار دادن تصاویر در دایرکتوری مربوط به خودشان و اضافه کردن یک فایل “مرا بخوانید” به پلاگینتان را توصیه می کند.

  افزودن قابلیت بزرگنمایی تصاویر در وردپرس با WP Image Zoom

فایل اصلی پلاگین

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

<?php
/* 
Plugin Name: Your Plugin Name Here
Plugin URI: Your Plugin URI
Version: Current Plugin Version
Author: Who Are You?
Description: What does your plugin do?

خط 3 به شما اجازه می دهد که برای پلاگین خود نام انتخاب کنید. خط 4 به شما اجازه می دهد که محل پلاگین خود را در وب به یک کاربر نشان دهید. خط 5 اجازه می دهد که نسخه فعلی را مشخص کنید. خط 6 به شما اجازه می دهد تا نویسنده ی پلاگین را مشخص کنید. خط 7 به شما اجازه می دهد که پلاگین خود را توصیف کنید.
آنچه که در زیر آمده است مثال پر کردن کد است:

<?php
/* 
Plugin Name: Devlounge Plugin Series
Plugin URI: http://www.devlounge.net/
Version: v1.00
Author: <a href="http://www.ronalfy.com/">Ronald Huereca</a>
Description: A sample plugin for a <a href="http://www.devlounge.net">Devlounge</a> series.

آنچه که در زیر نشان داده شده است تصویری از چیزی است که پلاگین در پانل پلاگین وردپرس به آن شبیه خواهد بود.

devlounge-plugin-screenshot

راه اندازی یک ساختار طبقاتی

لازم نیست که به طور فوق العاده با طبقه بندی های PHP برای توسعه پلاگین های وردپرس آشنا باشید، اما مطمئنا می تواند کمک کند. ساختار طبقاتی به منظور اجتناب از ترکیب نامگذاری ها با دیگر پلاگین های وردپرس لازم است. اگر کسی در جای دیگری یک عملکرد را در یک پلاگین با نبم مشابهی را ایجاد کند، یک خطا بوجود خواهد آمد و وردپرس تا زمانی که پلاگین برداشته شود غیر قابل اجرا خواهد شد.

if (!class_exists("DevloungePluginSeries")) {
	class DevloungePluginSeries {
		function DevloungePluginSeries() { //constructor
			
		}
	
	}

} //End Class DevloungePluginSeries

کاری که کد بالا انجام می دهد این است که وجود یم طبقه به نام DevloungePluginSeries را چک می کند. اگر این طبقه بندی وجود نداشته باشد، آن را ایجاد خواهد کرد.

شروع کردن طبقه بندیتان

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

if (class_exists("DevloungePluginSeries")) {
	$dl_pluginSeries = new DevloungePluginSeries();
}

اگر طبقه بندی DevloungePluginSeries ایجاد شده باشد، همه ی کدهای فوق وجود آن را چک خواهند کرد. اگر چنین باشد، یک متغیر به نام $dl_pluginSeriesبا یک مثال از طبقه بندی DevloungePluginSeries ایجاد می شود.

راه اندازی عملیات ها و فیلترها

قسمت بعدی کد، جا نگهدارنده ای برای عملیات ها و فیلترها در وردپرس (که من در پست بعد به آن می پردازم) ایجاد می کند.

//Actions and Filters	
if (isset($dl_pluginSeries)) {
	//Actions
	
	//Filters
}

?>

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

نتیجه گیری

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

آیا این مقاله برای شما مفید بود؟
تقریبا
خیر

دیدگاهتان را بنویسید

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

دیدگاه‌های این نوشته جدید ترین ها شاخص

  1. 4 سال عضو همیار وردپرس

    سلام بعد از طراحی افزونه چطور باید برای کابرانش بروزرسانی ها رو ارسال کنم ؟

  2. 4 سال عضو همیار وردپرس

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

    • 10 سال عضو همیار وردپرس

      سلام
      امکانش هست اما باید با برنامه خواسته خودتون رو پیاده کنید.

  3. با سلام
    لطفاً در متن بجای طبقه بندی از کلاس استفاده کنید، من اولش نفهمیدم منظورتون از طبقه بندی چیه!

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

    • 10 سال عضو همیار وردپرس

      سلام
      بله

    • شما میتونید طراحی کنید ؟ چطور در تماس باشم ؟

    • 10 سال عضو همیار وردپرس

      سلام
      متاسفانه در حوزه مسئولیت های بنده نیست.

    • 10 سال عضو همیار وردپرس

      این قضیه به ویرایش سبد خرید در ووکامرس برمیگرده که باید کدهای پی اچ پی زده بشه

  5. سلام و عرض ادب.
    من یه افزونه میخوام که چند باکس لیست داشته باشه که به هم وابسته باشن.
    یعنی مثلا اگر از باکس اولیه استان تهران رو انتخاب کنیم از باکس بعدی شهر شهریار و از باکس بعدی منطقه ی فلان رو انتخاب کنیم و منطقه ی فلان یک برگه باشه که به اون برگه هدایت بشه که در مورد اون منطقه توضیحات میده.
    ممنون از راهنماییتون.

  6. با سلام

    یه افزونه تیکتیگ می خوام که قابلیت این رو داشته باشه که وقتی کاربر بتونه تیکت بده که یک کدی رو خریداری کرده باشه.

    لطفا راهنمایی بفرمایید

  7. سلام. چرا تمجیدها فقط اینجا پاسخ داده میشه و بقیه سوالات بی پاسخ هستند؟

  8. سلام و خسته نباشید . در حال یادگیری ووردپرسم ! ی سوال داشتم من ی پلاگین رو نوشتم ک وقتی فعال میشه ی جدول ب دیتابیس ووردپرس اضافه میکنه با اکشن activated_plugin با یک سری فیلد ک خودم میخوام . اما حالا اگه بخوام توی خود وورد پرس ن توی سایت نشونش بدم و قابلیت ادیت و اضافه کردن موارد رو داشته باشه باید از کدوم هوک ، (اکشن یا فیلتر ) استفاده کنم ؟
    درواقع کجا میتونم جدولم رو نشون ادمین سایت نشون بدم ک بتونه اون رو ادیت کنه ؟ اما توی سایت نشون داده نشه فقط ادمین ک ووردپرس دسترسی داره بتونه ببینه و تنظیمش کنه !

    ممنون میشم جواب بدین

  9. سلام، من یه افزونه میخوام بنویسم که فقط چنتا تکست باکس داشته باشه و توی قالبم ازش استفاده کنم!
    مثلا توی تکس باکس هرچی نوشتم اونجا چاپ شه!
    مثه ضمیمه ی دلخواه که توی کانتنت استفاده میشه….

    ممنون میشم راهنماییم کنین..

  10. سلام
    من دنبال آموزش طراحی قالب برای پنل مدیریت وردپرس هستم اما نتونستم چیزی پیدا کنم

    ببخشید که اینجا کامنت گذاشتم