۱۳۹۵ مرداد ۱۶, شنبه

آموزش ساختن افزونه در وردپرس – ویرایش functions.php بس است!

تا امروز در مسترکد آموزش های متنوعی برای تغییر رفتار برخی از بخش های وردپرس و یا اضافه کردن امکانات جدید به وبسایت وردپرسی تان برای شما درج کرده ایم. اگر همراه مسترکد بوده باشید به خوبی میدانید که مهم نیست تغییر دلخواه شما چه باشد، به هر حال در اکثر موارد کد هایی که باید استفاده کنید جایشان در فایل functions.php قالب شما خواهد بود. امروز میخواهیم به راه دیگری برویم و روش بهتری را برای سفارشی سازی سایتتان به شما یاد بدهیم که بدون شک، پایداری سایت وردپرسی شما را چندین برابر کرده و در عین حال به شما کمک میکند تا بتوانید به شکل بهتری سایت خود را مدیریت کرده و کارایی آن را نیز افزایش دهید.

کاری که قصد داریم انجام بدهیم این است که
از این به بعد قطعه کد هایی که برای سفارشی سازی سایت استفاده میکنیم (snippet ها) را بجای قرار دادن در functions.php در قالب یک پلاگین (اصطلاحا Site Specific Plugin ) در سایت خود قرار دهیم.

اصلا چه دلیلی دارد که بجای ویرایش functions.php، برای خود افزونه بسازیم؟
پاسخ این سوال بسیار ساده است و جواب هایی هم که میتوان به آن ارائه کرد، بسیار مفصل. اما اجازه بدهید تا حد امکان مختصر به این پرسش، پاسخ دهیم.

اولین و ساده ترین دلیل این است که قطعه کد هایی که هر روز به شما آموزش میدهیم (یا شما در سایت های دیگر با آنها آشنا میشوید و تصمیم میگیرید از آنها استفاده کنید) در اکثر موارد اصلا ربطی به قالب سایت شما ندارند و بدیهی است که شما هم دلتان نمیخواهد اگر یک روز قالب وبسایتتان عوض شد، کلیه ی تنظیمات و سفارشی سازی هایی که در طول مدت استفاده از قالب با استفاده از فایل functions.php بر روی سایتتان اعمال کرده بودید را از دست بدهید. مثلا در روزهای گذشته به شما آموزش دادیم که چطور از انتشار ناخواسته مطالب در وردپرس جلوگیری کنید. بدیهی است که از هر قالبی هم که استفاده کنید دوست ندارید تنظیماتی که با زحمت بر روی سایت اعمال کرده اید تا نتایج دلخواه شما حاصل شود، از دست بروند. نمونه ای دیگر از این کد ها و تنظیمات، shortcode هایی است که ممکن است در سایت استفاده کرده باشید! فکر میکنم میتوانید لحظه ای را تصور که پس از تغییر قالبتان، دیگر هیچ از shortcode های شما کار نکند …

و اما دلیل دوم. تا حالا چند بار پیش آمده که کدی که در فایل functions.php قرار میدهید ایراد داشته باشد؟ یا مثلا شما آن را در محلی اشتباه در functions.php قرار داده باشید؟ و یا مثلا اشکالی در نحوه ی قرار گیری تگ های شروع و پایان php وجود داشته باشد؟ زیاد؟ پس میدانید میخواهم از چه چیزی صحبت کنم. زمان هایی پیش می آید که بخاطر قرار دادن یک کد اشتباه در functions.php باعث میشوید سایت شما به طور کامل از دسترس خارج شود و خودتان هم بیرون بخش مدیریت گیر می افتید. در این حالت باید حتما وارد هاست شده و یا با استفاده از FTP کنترل مسائل را به دست بگیرید. ولی اگر کد جدیدتان را در پلاگینی که مخصوص این کار ایجاد کرده اید قرار دهید، حتی اگر کد شما سراسر ایراد باشد، خود سیستم وردپرس این مسئله را فهمیده و به سادگی پلاگین را غیر فعال میکند. نتیجه میشود اینکه دسترسی شما به مدیریت حفظ میشود و بلایی هم سر سایتتان نخواهد آمد.

و نکته ی آخر هم اینکه هیچ کس از یک فایل functions.php غول پیکر که معلوم نیست در آن هر چیزی در کجا قرار گرفته است خوشش نمی آید.

بنابراین نتیجه ی استفاده از یک Site Specific Plugin (یا مثلا بهش بگوییم پلاگین کوچولو!) این است که سایت شما به پایداری بالاتری خواهد رسید و کارایی آن نیز بهبود خواهد یافت.

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

1 – در محل نصب پلاگین ها در هاستتان یک فولدر با نامی دلخواه برای خود ایجاد کنید. (محل نصب پلاگین ها یعنی wp-content -> plugins) مثلا ما نام فولدرمان را mrcode-plugin گذاشتیم.
2 – یک فایل، همنام با فولدر خود با فرمت php ایجاد کنید. مثلا mrcode-plugin.php و کد زیر را در آن قرار دهید :




/*
Plugin Name: یک پلاگین برای سایت example.com
Description: پلاگینی جهت اعمال تغییرات دلخواه در سایت example.com
*/
/* Start Adding Functions Below this Line */
 
/* Stop Adding Functions Below this Line */
?>
در کد بالا میتوانید example.com را با آدرس سایت خود عوض کنید.
3 – این فایل را در فولدری که ایجاد کرده بودید آپلود کنید.

یک نکته ی مهم این که اگر میخواهید از زبان فارسی در افزونه تان استفاده کنید فراموش نکنید، اینکودینگ فایلی که ایجاد میکنید باید utf-8 یا ترجیحا utf-8 without BOM باشد. چنین تنظیماتی را میتوانید از طریق ویرایشگری همچون Notepad++ انجام دهید ولی اگر چنین ویرایشگری ندارید و از cPanel استفاده میکنید، نگران چیزی نباشید، چون کافی است فایلتان را در خود cPanel ایجاد کنید تا ویژگی هایی که از آنها نام بردیم را داشته باشد.

با انجام این کار، از این به بعد میتوانید به سادگی هر گاه که خواستید snippet جدیدی به سایت خود اضافه کنید که وابسته به قالب سایت شما نبود، به سادگی به بخش ویرایشگر افزونه ها بروید (منوی افزونه ها، زیر منوی ویرایشگر) افزونه ی جدیدتان را برای ویرایش انتخاب کنید و کد دلخواهتان را جایی در میان دو خط کامنت شروع پایان (در خط 7 و 8 کد) قرار دهید و تغییرات را ذخیره کنید.

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

بدیهی است که توصیه میکنیم از این به بعد آموزش های مسترکد را به شکلی که امروز به شما آموزش دادیم دنبال کنید و برای کد هایی که ارتباطی با قالب سایتتان ندارند، سراغ functions.php نروید. امیدوارم از این آموزش لذت برده باشید.


هیچ نظری موجود نیست: