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

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

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

ساختار پوشه

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

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

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

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

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

۱
۲
۳
۴
۵
۶
۷
<?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?

خط ۳ به شما اجازه می دهد که برای پلاگین خود نام انتخاب کنید. خط ۴ به شما اجازه می دهد که محل پلاگین خود را در وب به یک کاربر نشان دهید. خط ۵ اجازه می دهد که نسخه فعلی را مشخص کنید. خط ۶ به شما اجازه می دهد تا نویسنده ی پلاگین را مشخص کنید. خط ۷ به شما اجازه می دهد که پلاگین خود را توصیف کنید.
آنچه که در زیر آمده است مثال پر کردن کد است:

۱
۲
۳
۴
۵
۶
۷
<?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 ، چک می کند. اگر چنین باشد(و تنها در صورتی که طبقه بندی موجود باشد)، آنگاه عملیات و فیلترهای مناسب راه اندازی شده اند.

نتیجه گیری

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