Отображать уведомления об обновлении, такие как "Что нового"


Я собираюсь выпустить новое обновление для своего плагина. Я использовал несколько функций, доступных только для WordPress 3.8, и это нормально, потому что я хочу поддерживать последнюю версию.

Как мне отобразить сообщение пользователю перед обновлением плагина со списком Что нового или просто общее предупреждение о том, что WordPress 3.8 требуется для запуска последней версии плагина?

Я прикрепил снимок экрана, на котором я хотел бы отобразить сообщение. Это что-то, что отображается на основе того, что вы внесли в журнал изменений вашего readme.txt в багажнике?

enter image description here

Author: tfrommen, 2014-01-11

1 answers

Вы можете подключиться к in_plugin_update_message-{$file}.

Для вышеупомянутого плагина соответствующий код выглядит следующим образом:

add_action('admin_menu', array($this,'admin_menu'), 11);
function admin_menu()
{
    global $pagenow;

    if( $pagenow == 'plugins.php' )
    {
        $hook = apply_filters('acf/get_info', 'hook');

        add_action( 'in_plugin_update_message-' . $hook, array($this, 'in_plugin_update_message'), 10, 2 );
    }
}

function in_plugin_update_message( $plugin_data, $r )
{
    $version = apply_filters('acf/get_info', 'version');
    $readme = wp_remote_fopen( 'http://plugins.svn.wordpress.org/advanced-custom-fields/trunk/readme.txt' );
    $regexp = '/== Changelog ==(.*)= ' . $version . ' =/sm';
    $o = '';

    if( !$readme )
    {
        return;
    }

    preg_match( $regexp, $readme, $matches );

    if( ! isset($matches[1]) )
    {
        return;
    }

    $changelog = explode('*', $matches[1]);
    array_shift( $changelog );

    if( !empty($changelog) )
    {
        $o .= '<div class="acf-plugin-update-info">';
        $o .= '<h3>' . __("What's new", 'acf') . '</h3>';
        $o .= '<ul>';

        foreach( $changelog as $item )
        {
            $item = explode('http', $item);

            $o .= '<li>' . $item[0];

            if( isset($item[1]) )
            {
                $o .= '<a href="http' . $item[1] . '" target="_blank">' . __("credits",'acf') . '</a>';
            }

            $o .= '</li>';


        }

        $o .= '</ul></div>';
    }

    echo $o;
}

Объявление: Вот как я сделал это для плагина, в котором я участвую.

 1
Author: tfrommen, 2014-01-20 17:07:35