管理バーにリンクやその他の機能を追加する際に使用する特定のフックとフィルタを探しています。
これまでに行われた好例は、Yoast WordPress SEO(Wordpress Plugin) です。
現在、管理バーを拡張するための資料はありません。 によると、The Codex それをオフにするか、または表示しないための2つのフィルタがあります。
no_admin_bar()
とshow_admin_bar()
Yoastのプラグインは、メニューを追加するだけでいいのです。基本的に、管理バーはサイドバーにあるのと同じプラグイン管理ページへのリンクの代替セットです。トップレベルのSEOメニューを追加するために、Yoastは次のことを行います。
$wp_admin_bar->add_menu( array( 'id' => 'wpseo-menu', 'title' => __( 'SEO' ), 'href' => get_admin_url('admin.php?page=wpseo_dashboard'), ) );
これにより、 "wpseo-menu"という名前のメニューが管理バーに追加され、ユーザーがリンクをクリックするとプラグインのダッシュボードに移動します。子リンクも同様に追加されます。
$wp_admin_bar->add_menu( array( 'parent' => 'wpseo-menu', 'id' => 'wpseo-kwresearch', 'title' => __( 'Keyword Research' ), '#', ) );
追加するメニューの「親」を指定するだけです。
それから、必要なだけ深く入り、必要なときに$wp_admin_bar->add_menu()
を呼び出して適切な情報を指定します。
参考までに、変数$wp_admin_bar
はWordPress内のクラスWP_Admin_Bar()
のインスタンスです。それはいくつかの異なるメソッドとプロパティを持っていますが、ここであなたが最も興味を持っているのは明らかにadd_menu()
です。このメソッドは特定のパラメータを受け入れます。
array( 'html' => '', 'class' => '', 'onclick' => '', target => '' );
しかし、WP_Admin_Bar()
クラス の残りの部分は プラガブルです。それはちょうどあなたがやろうとしていることとあなたがそれをしたい方法に正確に依存します。
関連項目:
wpseo_admin_bar()
のメニュー定義を見つけるWP_Admin_Bar()
のPHPXref小さな例ですが、私はこれをwp-hackersリストにも表示する前に書いていました
function wp_codex_search_form() {
global $wp_admin_bar, $wpdb;
if ( !is_super_admin() || !is_admin_bar_showing() )
return;
$codex_search = '<form target="_blank" method="get" action="http://wordpress.org/search/do-search.php" style="margin:2px 0 0;">
<input type="text" onblur="this.value=(this.value==\'\') ? \'Search the Codex\' : this.value;" onfocus="this.value=(this.value==\'Search the Codex\') ? \'\' : this.value;" maxlength="100" value="Search the Codex" name="search" class="adminbar-input">
<button type="submit" class="adminbar-button">
<span>Go</span>
</button>
</form>';
/* Add the main siteadmin menu item */
$wp_admin_bar->add_menu( array( 'id' => 'codex_search', 'title' => 'Search Codex', 'href' => FALSE ) );
$wp_admin_bar->add_menu( array( 'parent' => 'codex_search', 'title' => $codex_search, 'href' => FALSE ) );
}
add_action( 'admin_bar_menu', 'wp_codex_search_form', 1000 );
ナイトリービルドをダウンロードして、これら2つのファイルをチェックしてください。
クラスWP_Admin_Bar
は本質的に 'API'ですが、ファイルadmin-bar.php
はそれを使ってデフォルトのバーを構築し、たくさんのフックを起動します。
function my_admin_bar()
{
global $wp_admin_bar;
$wp_admin_bar->add_menu(array(
'parent' => 'my-account', // optional
'id' => 'my-unique-id',
'title' => '',
'href' => ''
));
}
add_action('admin_bar_menu', 'my_admin_bar');
それはほとんど基本です - これは私が自分自身から集めたものです(正直なところ、admin_bar_menu
がWP_Admin_Bar
のインスタンスを返さないのは少し面倒です - 私はこれらすべてのグローバルを嫌いです)。