آموزش ساخت پلاگین برای وردپرس

آموزش ساخت صفحه‌ی تنظیمات در وردپرس

در این آموزش قصد داریم به شما آموزش دهیم چگونه یک صفحه‌ی تنظیمات (Option Page) برای افزونه‌ی وردپرسی خود ایجاد کنید. ما می‌خواهیم یک افزونه بسازیم که لوگوی دلخوا خود را به سایت اضافه کنیم.

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

اولین کاری که باید انجام دهیم ساخت یک Option Page است و برای این کار از یک function به نام
add_options_page
استفاده می‌کنیم، این فانکشن چند پارامتر دارد، اولین پارامتر نام صفحه، دومین پارامتر نامی که در فهرست مدیریت ورپرس نمایش داده می‌شود، سومین پارامتر سطح دسترسی به این صفحه می‌باشد، پارامتر چهارم آی‌دی برای این صفحه است. می تونید به طور مثال آی‌دی را
dw_op_wp
قرار دهید و راه دیگر برای این‌که آی‌دی شما منحصر به فرد باشد استفاده از
__FILE__
است. و آخرین پارامتر یعنی پارامتر پنجم یک کال‌بک فانکشن است که مسئول نمایش محتوای صفحه‌ی ماست.

نکته در این است که باید این فانکشن درون اکشنی به نام
admin_menu
باشد و گرنه برای هر صفحه نمایش داده خواهد شد، که ما این را نمی‌خواهیم.

حال بیایید باهم صفحه‌ای که ساخته‌ایم را گسترش دهیم. اول دایوی با کلاس
wrap
می‌سازیم، داخل آن یک فرم قرار می‌دهیم با متد
POST
و اکشن آن را
options.php
قرار می‌دهیم، چون می‌خواهیم کاربر بتواند فایل آپلود کند پس کد زیر را نیز قرار می‌دهیم.

خروجی کدهای ما می‌شود:

برای راحتی بیشتر من این کدها را به صورت یک کلاس می‌نویسم ، من کلاس را هم به صورت static و هم به صورت non-static می نویسم.

Non-static :

Static :

حالا وقت آن است که فانکشن register_settings_and_fields() را ایجاد کنیم، در داخل این فانکشن ار فانکشن register_settings استفاده می‌کنم که چند پارامتر می‌گیرد: پارامتر اول اسم گروه یا group name که این نام باید منحصر به فرد باشد، پارامتر دوم نام راهی که شما بتوانید به این آپشن دسترسی داشته باشید، سومین پارامتر یک کال‌بک فانکشن است که می توانید اگر نیاز ندارید آن را ننویسید.

بعد نویت آن است که section را اضافه کنم، برای این کار از فانکشن add_settings_section استفاده می‌کنم، این فانکشن چند پارامتر دارد که اولی آی‌دی، دومی عنوان، سومی یک کال‌بک فانکشن است که مسئول چاپ خروجی است و چهارمی صفحه (که مشخص می‌کند این section برای کدام صفحه است).

من می خواهم یک input ایجاد کنم، برای این کار باید از فانکشن add_settings_field استفاده کنم که پارامتر اول ای دی، پارامتر دوم عنوان و پارامتر سوم نام فانکشنی است که input یا … دیگر را می‌سازد، چهارمین پارامتر این است که در کجا باشد و پارامتر پنجم مربوط به این است که کدام section باشد.

سپس فانکشن‌هایی را که نام آن‌ها را نوشته‌ام ایجاد می‌کنم، یادتان باشد که من می‌خواهم یک عکس هم دریافت کنم پس یک بار دیگر add_settings_fields را می‌نویسم.

اما برای نمایش این فیلدها باید در فرم از دو فانکشن settings_fields و do_settings_sections استفاده کنم.

در آخر از اکشن admin_init استفاده می‌کنم تا به من قابلیت ریجستر کردن تنظیماتم را بدهد و در کانستراکتور نیز فانکشن register_settings_and_fields را فراخوانی می‎کنم.

حال باید کلید submit بسازیم، برای ساخت این کلید در داخل متد display_options_page یک p با کلاس submit می‌سازم در داخل آن یک input می‌گذارم. حال وقت آن است تا مقادیری را که وارد می‌کنیم ذخیره شود و بتوانیم آنها را بازیابی کنیم.

یک پراپرتی پابلیک می‌سازم و در متد کانستراکتور آن را صدا زده و به آن نام آپشنی را می‌دهم که در جستوجوی آن هستم در اینجا dw_pluign_options .

حالا در متد dw_banner_heading_setting اینپوتی را که ساختیم کامل می‌کنیم، نام input را dw_plugin_options[‘dw_banner_heading’] و type آن را تکست می‌گذاریم اما قسمت مهم value است که داخل آن را value = “{$this->$option[‘dw_banner_heading’]}” می‌گذارم.

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

در این فانکشن اول چک می‌کنم اگر در tmp_name خالی نبود آن وقت پردازش مربوط به آپلود تصویر شروع شود، یک متغییر به نام $override می‌سازم و در آن تست فرم را false می‌گذارم، یک متغییر به نام $file می‌سازم سپس از فانکشن مربوط وردپرس به نام wp_handel_upload استفاده می‌کنم، این فانکشن دو پارامتر می‌گیرد اولی فایل ما دومی متغییر override که ساختیم.

تا اینجا گفتیم اگر فایل آپلود شده بود آن‌وقت وردپرس فایل را آپلود کند و نتیجه در $file ذخیره می‌شود، اگر فایل را پرینت آر کنید می‌بینید که آدرس عکس در url قرار دارد حالا باید plugin_options را آپدیت کنیم، $plugin_options[‘dw_logo’]=$file[‘url’]; به این شکل آدرس عکس را ذخیره می‌کنم، در آخر یک else می‌نویسم و سپس $plugin_options را ریترن می‌کنم.

اما برای نمایش دادن تصویر مورد نظر، حتما به یاد دارید که متدی به نام dw_logo_setting ساختیم و در آن یک input قرار دادیم حالا آن اینپوت را کامل می‌کنیم، یک شرط می‌گذارم اگر dw_logo مقداری داشت آن وقت آن را در یک img به نمایش می‌گذارم.

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

در آخر فایل index.php را باز کنید، و بعد از <main> متغییری ایجاد کنید و با استفاده از فانکشن get_options(‘dw_plugin_options’); محتویات آن را به متغییر بدهید اگر متغییر را print_r کنید می‌بینید که دارای عکس رنگ و نامی است که ما در صفحه option خودمان تعریف کردیم حالا می‌توانید از آنها استفاده کنید به این شکل:

کار ما تمام است. حالا کاربر شما می‌تواند با رفتن به صفحه‌ای که شما ایجادکردید عکس و تایتل مورد نظر خود را ایجاد کند و در صفحه‌ی اصلی آنها نمایش داده می‌شوند.

در آینده‌ی نزدیک نسخه‌ی ویدئویی این آموزش را به صورت رایگان برای علاقه‌مندان به وردپرس در سایت قرار خواهیم داد.

پیشنهاد می‌کنم این مقالات هم بخوانید

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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

Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
Share on facebook