web-dev-qa-db-ja.com

「新着情報」のような更新通知メッセージを表示する

私は私のプラグインのための新しいアップデートをプッシュしようとしています。 WordPress 3.8でしか利用できない機能をいくつか使用しましたが、最新バージョンをサポートしたいので問題ありません。

プラグインを更新する前にユーザーにメッセージを表示してWhat's Newのリスト、またはWordPress 3.8が最新バージョンを実行するために必要であるという一般的な警告を表示するにはどうすればよいですか。プラグイン?

メッセージを表示する場所のスクリーンショットを添付しました。これはあなたがトランク内のreadme.txtの変更ログに入れたものに基づいて表示されるものですか?

enter image description here

2
EHerman

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;
}

Ad: ここで は私が関わっているプラ​​グインのためにこれをどのようにしたかです。

1
tfrommen