it-swarm.asia

كيفية إنشاء رسالة مخصصة على تحديث البرنامج المساعد

رأيت هذه الرسالة اليوم عند الوصول إلى صفحة البرنامج المساعد: custom plugin update message

لذلك ، كيف يمكنني إنشاء هذا إذا كنت ترغب في تحديث الإضافات الخاصة بي التي يتم استضافتها على وورد؟

10
ariefbayu

يتم إنشاء هذه الرسالة بواسطة W3_Total_Cache->in_plugin_update_message() مدمن مخدرات إلى "in_plugin_update_message-$file"in wp_plugin_update_row().

تعمل بعض العناصر التحليلية على تحليل المعلومات التمهيديّة والعرض من سجل التغيير ، ولكن عمومًا يمكنك فقط صدى بعض الأشياء كما هو الحال مع أي ربط آخر.

9
Rarst

بناء هوك

لتوضيح اسم ربط التصرف:

global $pagenow;
if ( 'plugins.php' === $pagenow )
{
    // Better update message
    $file   = basename( __FILE__ );
    $folder = basename( dirname( __FILE__ ) );
    $hook = "in_plugin_update_message-{$folder}/{$file}";
    add_action( $hook, 'your_update_message_cb', 20, 2 );
}

مدمن مخدرات وظيفة رد الاتصال

الوظيفة نفسها بها $variables مرفقان: $plugins_data & $r ، والتي يمكن الوصول إليها بواسطة المكون الإضافي الخاص بك.

/**
 * Displays an update message for plugin list screens.
 * Shows only the version updates from the current until the newest version
 * 
 * @param (array) $plugin_data
 * @param (object) $r
 * @return (string) $output
 */
function your_update_message_cb( $plugin_data, $r )
{
    // readme contents
    $data       = file_get_contents( 'http://plugins.trac.wordpress.org/browser/YOUR_PLUGIN_FOLDER_NAME_IN_THE_OFFICIAL_REPO/trunk/readme.txt?format=txt' );

    // assuming you've got a Changelog section
    // @example == Changelog ==
    $changelog  = stristr( $data, '== Changelog ==' );

    // assuming you've got a Screenshots section
    // @example == Screenshots ==
    $changelog  = stristr( $changelog, '== Screenshots ==', true );

    // only return for the current & later versions
    $curr_ver   = get_plugin_data('Version');

    // assuming you use "= v" to prepend your version numbers
    // @example = v0.2.1 =
    $changelog  = stristr( $changelog, "= v{$curr_ver}" );

    // uncomment the next line to var_export $var contents for dev:
    # echo '<pre>'.var_export( $plugin_data, false ).'<br />'.var_export( $r, false ).'</pre>';

    // echo stuff....
    $output = 'whatever you want to do';
    return print $output;
}

الحاشية:

يمكن العثور على هذا النهج في مدقق الارتباط الداخلي المساعد.

إضافة:

يمكن استخدام plugin_basename(__FILE__) بدلاً من هذين الخطين أعلاه. كما أن التحقق مما إذا كانت الصفحة الحالية هي صفحة المكون الإضافي ليست ضرورية حقًا لأن الوظيفة لن يتم استدعاؤها إلا بهذه الصفحة على أي حال. الفائدة (البسيطة جدًا) هي أنه ليس لديك اتصال آخر متصل. نظرًا لأن هذه الإجابة قديمة جدًا ، فبينما لا تزال هذه الطريقة تعمل بدون مشكلة ، تحقق الآن من الكائن الذي تم إرجاعه بواسطة get_current_screen() .

10
kaiser