النتائج 1 إلى 9 من 9

الموضوع: [شرح] برمجة Plugin لمدونات Wordpress

  1. #1
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2008
    المشاركات
    438

    [شرح] برمجة Plugin لمدونات Wordpress



    اليوم سأتناول شرح كيفية برمجة إضافات Plugins لبرنامج المدونات Wordpress، المثال الذي سأتناوله عبارة عن إضافة وظيفتها جلب حالة الطقس من موقع ياهوو، ومن ثم عرضها على المدونة باللغة العربية او الإنجليزية، بناء على رغبة مدير المدونة.
    المثال رغم بساطته، إلا أني سأحاول فيه جاهداً أن أجمل كثيراً من الأفكار والدوال التي تساعد في بناء أضخم الإضافات.

    سيتلخص محور حديثنا على ما يلي:
    1. الخطوة الأولى في بناء الإضافة
    2. اسناد القيم الافتراضية في الإضافة
    3. لوحة تحكم للإضافة
    4. بناء الاضافة
    5. إستخدام الاضافة

    سنبدأ الآن على بركة الله، بسم الله:

    1. الخطوة الأولى في بناء الإضافة
    تبدأ الخطوة الأولى في بناء الإضافة، بإضافة ترويسة الاضافة:
    وهكذا تكون:
    كود PHP:
    /*
    Plugin Name: Majds Weather
    Plugin URI: http://MajdsBlog.com/
    Description: To show the weather of your city, in your blog.
    Version:  1.0
    Author: Majd Shaweesh
    Author URI: http://MajdsBlog.com
    */ 
    حيث ان:
    Plugin Name: هو إسم الاضافة
    Plugin URI: الوصلة الخاصة بدعم الاضافة
    Description: وصف حول وظيفة هذه الاضافة
    Version: الاصدارة
    Author: إسم منتج هذه الاضافة
    Author URI: وصلة صفحة المنتج

    2. اسناد القيم الافتراضية في الإضافة
    عند تشغيل الاضافة للمرة الأولى، فإن القيم تكون عادة NULL، ولذلك نحتاج بهذه الحالة إلى أن نوجد قيماً إفتراضية، يمكن إستخدامها والتعامل معها عند تشغيل الإضافة في المرة الاولى، وقبل التعامل معها من قبل مدير المدونة.
    يمكننا ذلك من خلال add action init، وسنرى مثالاً على ذلك.
    كود PHP:
    function weather_init() {
        
    $weather_options = array();
        
    $weather_options['lang'] = 'ar';
        
    add_option('weather_options'$weather_options);
    }

    add_action('init','weather_init'); 
    نرى هنا اننا إستخدمنا الدالة add_action، وكان البرامتر الأول init، منادياً الدالة weather_init والتي تقوم بإسناد القيم الافتراضية.
    نلاحظ أيضاً أننا إستخدمنا add_option وذلك لإضافة القيم، وأصبح إسم الخيارات الخاصة بالاضافة weather_options، يمكن التعامل معها كما سنرى، بدلاً من إستخدام قاعدة البيانات لتخزين القيم.

    3. لوحة تحكم للإضافة
    بالتأكيد الاضافة التي قمت ببرمجتها سيحتاج مدير المدونة أن يستخدمها بسلاسة، يمكنك ذلك من خلال إضافة صفحة خاصة بإضافك في لوحة تحكم المدير، من خلال الأمر add_action وبارمتر admin_menu، كما سنرى في المثال التالي:
    كود PHP:
    add_action('admin_menu''weather_create_admin'); 
    نلاحظ أن الاضافة ستتم إضافتها إلى لوحة الادارة، لكن بعد مناداة الدالة weather_create_admin والتي تحتوي على الأمر الخاص بإضافة الخيار الخاص بالادارة في لوحة التحكم:
    كود PHP:
    function weather_create_admin() {
        if (
    function_exists('add_options_page')) {
            
    add_options_page('Majds Weather Options''Majds Weather'8basename(__FILE__), 'manage_weather');
        }

    نلاحظ أننا إستخدمنا الدالة add_options_page لإضافة صفحة الخيارات إلى لوحة التحكم.
    يهمنا في ما كتبنا سابقاً، ما يلي:
    ان title الخاص بصفحة ادارة الاضافة سيكون: Majds Weather Options
    وأن إسم الاضافة الظاهر في لوحة التحكم سيكون: Majds Weather
    وعند النقر على Majds Weather سيقوم بمنادة الدالة الخاصة بإدارة الاضافة وهي manage_weather

    أما في الدالة manage_weather فنجد، صفحة كافة خيارات عمل الاضافة، وسنلقي نظرة على ما فيها:
    كود PHP:
    function manage_weather() {
        
    //array contain the languages available
        
    $langs = array(
            
    'ar'=>'ar',
            
    'en'=>'en'
        
    );
        
        
    //submitting the data
        
    if(!empty($_POST['Submit'])) {
            
    $weather_options = array();
            
    $weather_options['lang'] = addslashes($_POST['lang']);
            
    update_option('weather_options'$weather_options);
        }
        
        
    //Printing the administrator content
        
    $weather_options get_option('weather_options');
        echo 
    '<form method="post" action="'.$_SERVER['REQUEST_URI'].'"> ';
        echo 
    '<div class="wrap">';
        
    screen_icon();
        echo 
    '<h2>Majds Weather Options</h2>';
        echo 
    '<table class="form-table">';
        echo 
    '<tr><td>';
        echo 
    'Lang: <select name="lang">';
        do {
            echo 
    '<option value="'.stripslashes(current($langs)).'"'.((current($langs)==$weather_options['lang']) ? ' selected="selected"' '').'>'.stripslashes(current($langs)).'</option>';
        }while(
    next($langs));
        echo 
    '</select>';
        echo 
    '</td></tr>';
        echo 
    '</table>';
        echo 
    '<p class="submit"><input type="submit" name="Submit" class="button" value="Save Changes" /></p>';
        echo 
    '</div>';
        echo 
    '</form>';

    سأشرح فيها ما هو متعلق ببرمجة الاضافات بشكل عام، أما الأمور الأخرى المتعلقة بلغة PHP فلن أشرحها
    نجد أننا عندما أردنا إعتماد التغيير في قيم الخيارات الخاصة بالاضافة إستخدمنا الدالة update_option

    وعندما أردنا إستخدام قيم options في عمل الاضافة او الطباعة إستخدمنا الدالة get_option مع إرسال إسم الخيار كبرامتر.

    4. بناء الاضافة
    نأتي الآن الى الكود الخاص بالاضافة، المتعلق بإستقبال حالة الطقس من موقع ياهوو، وطباعة حالة الطقس الآن:
    كود PHP:
    function get_weather() {
        
    $xml file_get_contents("http://xml.weather.yahoo.com/forecastrss?p=WEXX0001&u=c");
        
    preg_match_all('/<yweather:condition.*?text="(.*?)".*?code="(.*?)".*?temp="(.*?)".*?date="(.*?)"/mi'$xml$current);
        
    preg_match_all('/<yweather:forecast.*?date="(.*?)".*?low="(.*?)".*?high="(.*?)".*?text="(.*?)".*?code="(.*?)"/mi'$xml$forecast);

        
    // To download every possible Yahoo! weather code (to find out the codes for rain), run...
        // curl http://us.i1.yimg.com/us.yimg.com/i/us/we/52/[0-50].gif -o weather_#1.gif
        
    $rain = array(01234567891011121314151617183537383940414243454647);

        
    $date      date("Y-m-d"strtotime($current[4][0]));
        
    $day0      $current[3][0];
        
    $day0_text $current[1][0];
        
    $day1      $forecast[3][0];
        
    $day1_text $forecast[4][0];
        
    $day2      $forecast[3][1];
        
    $day2_text $forecast[4][1];
        
    $rain      in_array($current[2][0], $rain) ? 0;
        
    $weather_options get_option('weather_options');
        if(
    $weather_options['lang']=='ar')
            echo 
    'الحرارة الآن: '.$day0;
        else 
            echo 
    'Now the weather is: '.$day0;

    هنا أيضاً نرى أننا إستخدمنا get_options لمعرفة القيم، والتي ساعدتنا في آلية إعتماد الطباعة سواء باللغة العربية أو الإنجليزية.

    5. إستخدام الاضافة
    لطباعة الاضافة في مدونتك، يكفيك فقط مناداة الدالة get_weather، في المكان الذي ترغبه:
    كود PHP:
    echo get_weather(); 
    ولكني أفضل أن تستخدم
    كود PHP:
    if (function_exists('get_weather')) {
        echo 
    get_weather();

    اما كود الاضافة كاملاً:
    كود PHP:
    /*
    Plugin Name: Majds Weather
    Plugin URI: http://MajdsBlog.com/
    Description: To show the weather of your city, in your blog.
    Version:  1.0
    Author: Majd Shaweesh
    Author URI: http://MajdsBlog.com
    */
    //Function for managing
    function manage_weather() {
        
    //array contain the languages available
        
    $langs = array(
            
    'ar'=>'ar',
            
    'en'=>'en'
        
    );
        
        
    //submitting the data
        
    if(!empty($_POST['Submit'])) {
            
    $weather_options = array();
            
    $weather_options['lang'] = addslashes($_POST['lang']);
            
    update_option('weather_options'$weather_options);
        }
        
        
    //Printing the administrator content
        
    $weather_options get_option('weather_options');
        echo 
    '<form method="post" action="'.$_SERVER['REQUEST_URI'].'"> ';
        echo 
    '<div class="wrap">';
        
    screen_icon();
        echo 
    '<h2>Majds Weather Options</h2>';
        echo 
    '<table class="form-table">';
        echo 
    '<tr><td>';
        echo 
    'Lang: <select name="lang">';
        do {
            echo 
    '<option value="'.stripslashes(current($langs)).'"'.((current($langs)==$weather_options['lang']) ? ' selected="selected"' '').'>'.stripslashes(current($langs)).'</option>';
        }while(
    next($langs));
        echo 
    '</select>';
        echo 
    '</td></tr>';
        echo 
    '</table>';
        echo 
    '<p class="submit"><input type="submit" name="Submit" class="button" value="Save Changes" /></p>';
        echo 
    '</div>';
        echo 
    '</form>';
    }

    function 
    weather_create_admin() {
        if (
    function_exists('add_options_page')) {
            
    add_options_page('Majds Weather Options''Majds Weather'8basename(__FILE__), 'manage_weather');
        }
    }

    function 
    get_weather() {
        
    $xml file_get_contents("http://xml.weather.yahoo.com/forecastrss?p=WEXX0001&u=c");
        
    preg_match_all('/<yweather:condition.*?text="(.*?)".*?code="(.*?)".*?temp="(.*?)".*?date="(.*?)"/mi'$xml$current);
        
    preg_match_all('/<yweather:forecast.*?date="(.*?)".*?low="(.*?)".*?high="(.*?)".*?text="(.*?)".*?code="(.*?)"/mi'$xml$forecast);

        
    // To download every possible Yahoo! weather code (to find out the codes for rain), run...
        // curl http://us.i1.yimg.com/us.yimg.com/i/us/we/52/[0-50].gif -o weather_#1.gif
        
    $rain = array(01234567891011121314151617183537383940414243454647);

        
    $date      date("Y-m-d"strtotime($current[4][0]));
        
    $day0      $current[3][0];
        
    $day0_text $current[1][0];
        
    $day1      $forecast[3][0];
        
    $day1_text $forecast[4][0];
        
    $day2      $forecast[3][1];
        
    $day2_text $forecast[4][1];
        
    $rain      in_array($current[2][0], $rain) ? 0;
        
    $weather_options get_option('weather_options');
        if(
    $weather_options['lang']=='ar')
            echo 
    'الحرارة الآن: '.$day0;
        else 
            echo 
    'Now the weather is: '.$day0;
    }

    function 
    weather_init() {
        
    $weather_options = array();
        
    $weather_options['lang'] = 'ar';
        
    add_option('weather_options'$weather_options);
    }

    add_action('init','weather_init');
    add_action('admin_menu''weather_create_admin'); 
    بالتوفيق
    مجد شاويش :: MajdsBlog.com





    التعديل الأخير تم بواسطة MPHP ; 30-07-2009 الساعة 06:45 PM
    __________________
    لا إله الا الله محمد رسول الله

    فضائية الأقصى :: عينك على الوطن
    نيلسات: 10872 عمودي 27500
    عربسات: 12054 عمودي 27500


    إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..


  2. #2
    عضو نشيط
    تاريخ التسجيل
    May 2009
    المشاركات
    121


    شكرآ لك اخي العزيز مجد , موضوعك سيفيدني بشكل كبير جدآ , نظرآ لقله الدروس التي تشرح برمجة الإضافات لمدونات الوورد بريس





    __________________
    العضوية مشتركة بين 3 اشخاص

  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2008
    المشاركات
    438


    حياك الله، ونحن في الخدمة دائماً..





    __________________
    لا إله الا الله محمد رسول الله

    فضائية الأقصى :: عينك على الوطن
    نيلسات: 10872 عمودي 27500
    عربسات: 12054 عمودي 27500


    إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    383


    جزاك الله كل خير يا خوي





    __________________
    منتديات الريسي التطويرية منتدى الدعم الفني المجاني
    http://www.alreesi.net/vb/
    دبليو سبورت :- الرياضة ما بين يديك + http://www.wsport.net/
    كود PHP:
    http://www.wsport.net 

  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    508


    شرح ممتاز
    مشكور اخوي على المجهود
    الموضوع افادني جدا
    في انتضار دروس اكتر حول برمجة الاضافات
    بالتوفيق





    __________________
    قوالب ووردبريس مدفوعة

    تابع احدث الاعمال على الفيسبوك :https://www.facebook.com/almtwer


  6. #6
    عضو سوبر نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    627


    درس بالفعل متميز





    __________________


  7. #7
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2008
    المشاركات
    438


    مروركم اسعدني كثيراً





    __________________
    لا إله الا الله محمد رسول الله

    فضائية الأقصى :: عينك على الوطن
    نيلسات: 10872 عمودي 27500
    عربسات: 12054 عمودي 27500


    إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..



  8. بارك الله فيك اخوي MPHP

    طرح مفيد جدا لمستخدمي Wordpress

    يعطيك العافيه





    __________________
    -----------------------------------------------------------
    :: همـ المشاعر ــس :: عبد الله :: للتصميم و التطوير ::
    http://www.mr-sa.com
    -----------------------------------------------------------

  9. #9
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2004
    المشاركات
    431


    شرح جيد ومثال رائع على أستخدام كثير من خصائص الأضافات في الورد بريس

    جزاك الله خير





    __________________
    حازم خالد
    مبرمج، بعمل مواقع ويب وتطبيقات موبيل، هتلاقي شوية كورسات فيديو على YouTube بتاعي، وشوية كود على اكونت Github، ودي سيرتي فيها شوية حجات من شغلي، اخيراً كل لينكات السوشيال ميديا بتاعتي هنا.





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض