آموزش ساخت افزونه وردپرس - قسمت اول
لینک کوتاه یکشنبه , 01 مرداد 1391 دیدگاهها بسته است
بعد از غیبتی طولانی اومدم یه سلام تپل بدم و برم سراغ یه چیزی که به درد همتون میخوره .
حقیقتش میبینم که در وبلاگستان فارسی خیلی ها هستن که افزونه ها رو فارسی میکنن ، معرفی میکنن و ... اما حقیقتش کمتر کسائی هستن که خودشون بیان افزونه بنویسن و من دوست دارم ایرانی جماعت توی این زمینه حرفی واسه گفتن داشته باشه !
ماشاالله این روزها هر سایتی میری همه طراح شدن و قالب میزنن اونم از نوع بد و خوبش ، اینجاست که یه چیز جدید یاد گرفتن واقعاً میچسبه!
سرتون رو در نیارم برای ساخت افزونه وردپرس یه کمی اطلاعات باید داشته باشید .
Html ,Css در حد متوسط به بالا و php در حد متوسط بلد باشین کافیه یه چند خط Sql هم میخواین که خدا بزرگه البته اینو اضافه کنم که یک ایده تپل قابل اجرا هم لازمه!
در ادامه یک سری از توابع وردپرس که راست دست کار ماست رو معرفی میکنم و در مطلب آتی انشاالله یک افزونه رو با هم مینویسیم تا یک کار عملی هم کرده باشیم .
در ادامه با من باشید ...
تابع register_activation_hook
این تابع وقتی افزونه رو فعال میکنید ، صدا زده میشه .
دو آرگومان میگیره اولی ، فایل افزونه است که با ثابت __FILE__ مقدار دهی میشی و آرگومان دوم نام تابعی هست که قراره کاری رو با نصب افزونه برامون انجام بده . مثال :
register_activation_hook(__FILE__,'reza_install'); function reza_install() { add_option('reza_plugin_name','reza_example'); }
این تابع عکس تابع قبلیه ، وقتی افزونه غیرفعال میشه ، این تابع صدا زده میشه .
دو آرگومان میگیره ، اولی فایل افزونه است که با ثابت __FILE__ مقدار دهی میشه ، و دومی نام تابعی که قراره کاری رو با غیرفعال کردن افزونه انجام بده ، مثلاً حذف جدولهای دیتابیس افزونه یا یک آپشن . مثال :
register_deactivation_hook( __FILE__, 'reza_remove' ); function reza_remove() { delete_option('reza_plugin_name'); }
این تابع ، فیلتری رو بر یکی از توابع وردپرس وارد میکنه ، شبیه یک صافی عمل میکنه ، برای وقتی که بخواید یک چیزی رو جایگزین کنید یا مثلاً حروف عربی رو به فارسی تبدیل کنید و یا یک شورت کد ساده بنویسید .
دو آرگومان میگیره ، اولی اسم تابعی که قرار فیلتر روش انجام بشه ، دومی اسم تابعی که خودمون تعریف میکنیم تا عمل فیلتر شدن رو انجام بده . مثال : تبدیل عبارت [rezaonline] در محتوا به لینک رضا آنلاین .
add_filter('the_content', 'reza_filter'); function reza_filter($content) { $rezaonline_link = "<a href='https://rezaonline.net'>rezaonline.net</a>"; return str_replace('[rezaonline]',$rezaonline_link,$content); }
این تابع اکشنی رو بر یکی از توابع وردپرس وارد میکنه ، مثلاً وقتی یک افزونه نصب میکنید و لازم است فایل استایل افزونه در قالب فراخوانی بشه یک اکشن به تابع wp_head میزنید .
دو آرگومان میگیره ، اولی اسم تابعی که قراره اکشن روش انجام بشه ، دومی اسم تابعی که کار اکشن رو انجام میده . مثال :
add_action('wp_head','add_style'); function add_style() { echo '<script>alert("اکشن تاثیر داده شده است !")</script>'; }
این تابع در صورتی که کاربر لاگین کرده مدیر باشد مقدار 1 را برمیگرداند و در غیر اینصورت مقدار 0 . بدون آرگومان . مثال :
if(is_admin()) echo 'شما مدیر هستید . سلام مدیر .'; else echo 'شما کاربر هستید';
این تابع همونطور که از اسمش پیداست یک صفحه جدید به منوی وردپرس اضافه میکنه برای تنظیمات افزونه .
6 آرگومان میگیره ، به ترتیب عنوان صفحه افزونه ، نام عنوان منو ، سطح دسترسی به افزونه ، آدرس کوئری استرینگ دسترسی ، تابع نمایش محتوای صفحه افزونه ، یک آیکن برای منو . مثال :
* لازم به ذکره این تابع باید داخل یک تابع دیگه که عمل اکشن رو به admin_menu میده انجام بشه .
add_action('admin_menu','add_menu'); function add_menu() { add_menu_page('افزونه تست','افزونه تست', 'administrator','test_plugin', 'test_plugin_func','https://rezaonline.net/reza.png'); } function test_plugin_func() { echo 'salam b safhe tanzimate afzone khosh amadid .'; }
اگر به دیتابیس وردپرس برید و جدول wp_options رو ببنید میبینید که این جدول شامل یک سری کلید در فیلد option_name و یک سری مقدار در فیلد option_value هست .
اینها اطلاعاتی هستن که توسط خود وردپرس و توسط افزونه ها اینجا ثبت میشن تا در سایت استفاده بشن .
مثلاً تابع get_option با توجه به کلید ، مقدار رو از دیتابیس میگیره ، مثلاً دستور زیر آدرس سایت رو نشون میده .
echo get_option("siteurl");
لازم به ذکره فیلد option_value از نوع longtext است ، پس نگران حجم اطلاعات نباشید !
تابع add_option
این تابع برای افزودن و ذخیره کردن یک سری اطلاعات در جدول آپشن هست . دو آرگومان میگیرد ، آرگومان اول کلید آپشن و آرگومان دوم مقداری که باید ذخیره شود (رشته یا آرایه).
مثال :
add_option('reza_test','salam');
برای گرفتن مقدار یک آپشن از طریق کلید آن .
یک آرگومان میگیرد و آن کلید آپشن است . مثال نمایش مقدار آپشن قبلی :
echo get_option('reza_test');
این تابع برای تغییر مقدار یک آپشن استفاده میشود.
دو آرگومان میگیرد ، اولی کلید آپشن و دومی مقدار جدید . مثال :
update_option('reza_test','salami dobare');
برای حذف یک آپشن استفاده میشود.
یک آرگومان میگیرد که کلید آپشن است . مثال :
delete_option('reza_test');
دوستانی که علاقه دارند برای وردپرس افزونه بسازند ، مستندات خود وردپرس محل مناسبی برای پیدا کردن ابزار کارتان است .
لینک بخش های دیگر آموزش