管理メニュー項目に更新通知バブルを追加しますか?


9

私はこれをより意味のあるものに書き直しました。

OK、デフォルトのWordPressプラグインのように、更新をチェックするリモートサービスを使用するプラグインがあります。この場合、XMLファイルをチェックするだけです。

ここに画像の説明を入力してくださいアップデートが利用可能になったときに、このようなメニューのふきだしを表示したいのですが。

「1」または「アラート」のようなテキストのみを表示できますが、問題ではありません。

私のプラグインは(を使用してadd_options_page)オプションページを使用するため、プラグイン設定はデフォルトの[設定]サブメニューの下に表示されます。

バブルを表示するには、次のCSSを追加する必要があると思います。

<span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>

グローバルに結びつく$submenu。問題は、各サイトに異なる値があるため、メニューにハードコーディングされた配列値を使用できないことです。

だから私は使用できません $submenu[80][10] .= <span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>

プラグインのサブメニュー値を見つけるにはどうすればよいですか?配列をループして文字列値を一致させる必要がありますか?

また、値をハードコーディングしても、バブルを表示できませんでした。

//adding plugin to menu
add_action('admin_menu', 'sec_plugin_checker');

function sec_plugin_checker() {
  add_options_page(' Plugin Checker', 'Plugin Check', 'activate_plugins', 
  'sec_plugin_check', 'sec_checker');


// the conditional where I want the bubble to appear

if (!empty($matches)){ 
    echo "Match found !<br />";

    global $submenu;
    foreach( $submenu as $item ) {

    $item[41][20] = sprintf( __( 'Updates %s', 'sec_plugin_checker' ),  
                "<span class='update-plugins count-1' title='title'>
                 <span class='update-count'>1</span></span>");  

       }
  }

そして、これはどのvar_dump($submenu);ようなものか、

["options-general.php"]=>
array(9){
...

[41]=>
    array(4) {
      [0]=>
      string(20) "Plugin Check"
      [1]=>
      string(16) "activate_plugins"
      [2]=>
      string(21) "sec_plugin_check"
      [3]=>
      string(23) " Plugin Checker"

     ...

      }

これの理由は何ですか?正確に何をしたいですか?
JANBočínec

1
@Wyck:利用可能な更新とモデレートされていないコメントの数を示すバブルについて話していますか?これをより明確にするために、質問を更新してスクリーンショットを含める必要があるかもしれません。
Jan Fabry

はい、画面を追加します。
Wyck

正確には何が利用可能な更新を示したいですか?WPORGリポジトリーがホストするテーマとプラグインの場合、この更新通知は自動的に処理されます。
チップベネット

これはプラグインのカスタム関数で、別のサービスからリモート更新を取得します。同じ更新通知機能を使用したいと思います。
Wyck

回答:


8

add_options_page()後でではなく、に電話したときにこれを行います。内部構造を操作するのではなく、サポートされているAPIを使用してこれを実行することを常にお勧めします。

プラグインアップデーターは定期的にプラグインステータスをチェックし、結果を一時ファイルに保存します。これは、メニューが作成されたときにこのキャッシュされたステータスのみを読み取ることを意味し、すべてのページの読み込みで完全なチェックを行いません。同様のことができます:

add_action( 'admin_menu', 'wpse15567_admin_menu' );
function wpse15567_admin_menu()
{
    $warnings = get_transient( 'wpse15567_warnings' );
    $warning_count = count( $warnings );
    $warning_title = esc_attr( sprintf( '%d plugin warnings', $warning_count ) );

    $menu_label = sprintf( __( 'Plugin Checker %s' ), "<span class='update-plugins count-$warning_count' title='$warning_title'><span class='update-count'>" . number_format_i18n($warning_count) . "</span></span>" );

    add_options_page( 'Plugin Check', $menu_label, 'activate_plugins', 'sec_plugin_check', 'sec_checker' );
}

通知バブル付きのメニュー項目

実際の警告チェックを行う場合、結果を一時的に保存して後で読み取ることができます。

if ( ! empty( $matches ) ) {
    set_transient( 'wpse15567_warnings', $matches );
}

警告がない場合、特別なことは何もしません。それはクラスなるので、バブルは表示されませんcount-0持っているdisplay: noneCSSのを


1
パーフェクト!ありがとうこれはこれを行うためのはるかに良い方法です。
Wyck、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.