私はもっと意味を成すためにこれを再言しました。
さて、私はデフォルトのWordPressプラグインのように、アップデートをチェックするリモートサービスを使用するプラグインを持っています。
このようなメニューの吹き出しを見せたい 更新が利用可能になったとき。
「1」または「alert」のようなテキストだけを表示できますが、問題ありません。
私のプラグインは(add_options_page
を使って)オプションページを使っているので、プラグイン設定はデフォルトの "Settings"サブメニューの下に現れます。
バブルを表示するには、次の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"
...
}
私はあなたがadd_options_page()
を呼び出すときにこれをするでしょう、後でではありません。内部構造で遊ぶのではなく、サポートされているAPIを使ってこれを行う方が常によいです。
プラグインアップデータは定期的にプラグインの状態をチェックしてから結果を transient に保存します。これは これはキャッシュされたステータスだけを読むことを意味します メニューが作成されるとき、それはすべてのページがロードされたときに完全なチェックをしません。あなたは似たようなことをすることができます:
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 );
}
警告がない場合は、特別なことはしません。バブルはcssにcount-0
を持つクラスdisplay: none
、 を取得するため表示されません .