نمایش نتایج: از شماره 1 تا 4 , از مجموع 4

موضوع: آموزش ساخت افزونه وردپرس

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    عضو انجمن rezaonline.net آواتار ها
    تاریخ عضویت
    Apr 2012
    محل سکونت
    Sanandaj | Tehran
    نوشته ها
    939
    تشکر تشکر کرده 
    1,556
    تشکر تشکر شده 
    2,338
    تشکر شده در
    1,230 پست

    پیش فرض آموزش ساخت افزونه وردپرس

    بعد از غيبتي طولاني اومدم يه سلام تپل بدم و برم سراغ يه چيزي که به درد همتون ميخوره .
    حقيقتش ميبينم که در وبلاگستان فارسي خيلي ها هستن که افزونه ها رو فارسي ميکنن ، معرفي ميکنن و … اما حقيقتش کمتر کسائي هستن که خودشون بيان افزونه بنويسن و من دوست دارم ايراني جماعت توي اين زمينه حرفي واسه گفتن داشته

    فرض رو بر اين ميگيرم که شما 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)

  2. تعداد تشکر ها ازrezaonline.net به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 2
    آخرين نوشته: May 5th, 2016, 12:20
  2. پاسخ ها: 0
    آخرين نوشته: October 15th, 2014, 09:50
  3. پاسخ ها: 0
    آخرين نوشته: October 15th, 2014, 09:40
  4. لزوم ورود مدارس کشور به آموزش it
    توسط name3 در انجمن مباحث دیگر
    پاسخ ها: 0
    آخرين نوشته: January 30th, 2014, 22:46

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •