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







پاسخ با نقل قول