بعد از غيبتي طولاني اومدم يه سلام تپل بدم و برم سراغ يه چيزي که به درد همتون ميخوره .
حقيقتش ميبينم که در وبلاگستان فارسي خيلي ها هستن که افزونه ها رو فارسي ميکنن ، معرفي ميکنن و … اما حقيقتش کمتر کسائي هستن که خودشون بيان افزونه بنويسن و من دوست دارم ايراني جماعت توي اين زمينه حرفي واسه گفتن داشته
فرض رو بر اين ميگيرم که شما php رو در حد متوسط بلديد ، سعي ميکنم ساده توضيح بدم و از پيچيدگي جلوگيري کنم ، اگه مشکلي داشتين بهترين محل انجمن نوپاي wp-parsi هست .
تابع register_activation_hook
اين تابع وقتي افزونه رو فعال ميکنيد ، صدا زده ميشه .
دو آرگومان ميگيره اولي ، فايل افزونه است که با ثابت __FILE__ مقدار دهي ميشي و آرگومان دوم نام تابعي هست که قراره کاري رو با نصب افزونه برامون انجام بده . مثال :
کد:
register_activation_hook(__FILE__,'reza_install');
function reza_install()
{
add_option('reza_plugin_name','reza_jigar');
}
تابع register_deactivation_hook
اين تابع عکس تابع قبليه ، وقتي افزونه غيرفعال ميشه ، اين تابع صدا زده ميشه .
دو آرگومان ميگيره ، اولي فايل افزونه است که با ثابت __FILE__ مقدار دهي ميشه ، و دومي نام تابعي که قراره کاري رو با غيرفعال کردن افزونه انجام بده ، مثلاً حذف جدولهاي ديتابيس افزونه يا يک آپشن . مثال :
کد:
register_deactivation_hook( __FILE__, 'reza_remove' );
function reza_remove()
{
delete_option('reza_plugin_name');
}
تابع add_filter
اين تابع ، فيلتري رو بر يکي از توابع وردپرس وارد ميکنه ، شبيه يک صافي عمل ميکنه ، براي وقتي که بخوايد يک چيزي رو جايگزين کنيد يا مثلاً حروف عربي رو به فارسي تبديل کنيد و يا يک شورت کد ساده بنويسيد .
دو آرگومان ميگيره ، اولي اسم تابعي که قرار فيلتر روش انجام بشه ، دومي اسم تابعي که خودمون تعريف ميکنيم تا عمل فيلتر شدن رو انجام بده . مثال : تبديل عبارت [rezaonline] در محتوا به لينک رضا آنلاين .
کد:
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);
}
تابع add_action
اين تابع اکشني رو بر يکي از توابع وردپرس وارد ميکنه ، مثلاً وقتي يک افزونه نصب ميکنيد و لازم است فايل استايل افزونه در قالب فراخواني بشه يک اکشن به تابع wp_head ميزنيد .
دو آرگومان ميگيره ، اولي اسم تابعي که قراره اکشن روش انجام بشه ، دومي اسم تابعي که کار اکشن رو انجام ميده . مثال :
کد:
add_action('wp_head','add_style');
function add_style()
{
echo '<script>alert("اکشن تاثير داده شده است !")</script>';
}
تابع is_admin
اين تابع در صورتي که کاربر لاگين کرده مدير باشد مقدار 1 را برميگرداند و در غير اينصورت مقدار 0 .
بدون آرگومان . مثال :
کد:
if(is_admin())
echo 'شما مدير هستيد . سلام مدير .';
else
echo 'شما کاربر هستي آآآ';
تابع add_menu_page
اين تابع همونطور که از اسمش پيداست يک صفحه جديد به منوي وردپرس اضافه ميکنه براي تنظيمات افزونه .
6 آرگومان ميگيره ، به ترتيب عنوان صفحه افزونه ، نام عنوان منو ، سطح دسترسي به افزونه ، آدرس کوئري استرينگ دسترسي ، تابع نمايش محتواي صفحه افزونه ، يک آيکن براي منو . مثال :
* لازم به ذکره اين تابع بايد داخل يک تابع ديگه که عمل اکشن رو به admin_menu ميده انجام بشه .
کد:
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 )
اگر به ديتابيس وردپرس بريد و جدول wp_options رو ببنيد ميبينيد که اين جدول شامل يک سري کليد در فيلد option_name و يک سري مقدار در فيلد option_value هست .
اينها اطلاعاتي هستن که توسط خود وردپرس و توسط افزونه ها اينجا ثبت ميشن تا در سايت استفاده بشن .
مثلاً تابع get_option با توجه به کليد ، مقدار رو از ديتابيس ميگيره ، مثلاً دستور زير آدرس سايت رو نشون ميده .
کد:
echo get_option("siteurl");
الان وقتشه 4 تابع کار با جدول آپشن ها رو معرفي کنم ، اين توابع در افزونه ها و فرم هاي افزونه ها و صفحه تنظيمات قالب استفاده ميشه .
لازم به ذکره فيلد option_value از نوع longtext است ، پس تا دلتون ميخواد بريزين توش
تابع add_option
اين تابع براي افزودن و ذخيره کردن يک سري اطلاعات در جدول آپشن هست .
دو آرگومان ميگيرد ، آرگومان اول کليد آپشن و آرگومان دوم مقداري که بايد ذخيره شود (رشته يا آرايه). مثال :
کد:
add_option('reza_test','salam');
تابع get_option
براي گرفتن مقدار يک آپشن از طريق کليد آن .
يک آرگومان ميگيرد و آن کليد آپشن است . مثال نمايش مقدار آپشن قبلي :
کد:
echo get_option('reza_test');
تابع update_option
اين تابع براي تغيير مقدار يک آپشن استفاده ميشود.
دو آرگومان ميگيرد ، اولي کليد آپشن و دومي مقدار جديد . مثال :
کد:
update_option('reza_test','salami dobare');
تابع delete_option
براي حذف يک آپشن استفاده ميشود.
يک آرگومان ميگيرد که کليد آپشن است . مثال :
کد:
delete_option('reza_test');
*نکته پاياني در مورد آپشن ها اينکه شما به جاي مقدار ميتونيد از آرايه استفاده کنيد ، تابع بصورت خودکار آرايه ها را به رشته سرياليز شده تبديل ميکند و در ديتابيس ذخيره ميکند و در هنگام گرفتن آپشن باز عمل تبديل را خودکار انجام ميدهد .
در آخر اينکه ، وردپرس توابع بسيار زيادي داره و اين براي تازه کارها بسيار عالي است ، اما نقد بزرگ من به اين شيوه توسعه و addon ، متکي به توابع و عدم استفاده از ساختار شي گرايي است!
دوستاني که علاقه دارند براي وردپرس افزونه بسازند ، مستندات خود وردپرس محل مناسبي براي پيدا کردن ابزار کارتان است .
جلسه بعد با هم يک افزونه رو ميسازيم و ميريم سراغ کد زدن ، خودتون رو آماده کنيد
منبع : خودم (REZAONLINE.NET)