line 474
の/wp-includes/admin-bar.php
から始めて、次のように宣言されている関数があります。
function wp_admin_bar_new_content_menu( $wp_admin_bar )
それが何をするかは、ユーザーが+ New
機能を持つすべてのカスタム投稿タイプと共にedit_posts
メニュー項目を生成します。実際のトップメニュー項目+ New
は、配列内で最初に呼び出されるのでposts
にデフォルト設定されます(私はそれがどのように機能するかと思います)。最初の+ New
リンクを他のものに実際に変更したいのですが。私たちの設定では、ユーザーにedit_posts
に高度なカスタムフィールドオプションページを管理させる能力を与える必要がありますが、彼らに投稿自体へのアクセスを与えていません(メニューシステムから隠すだけです)。ちょっとファンキーですが、それは私たちにとって使いやすさの問題です。
上記のすべての寄せ集めの他に、アイテム自体のID(この場合はnew-content
)に基づいて既存のメニューリンクを変更できますか、それともメニュー自体を破棄して再構築する必要がありますか?そのhref
属性を#
に変更しようとしています。ありがとうございます。
私は以前にadmin-barを使ったことがありません。しかし、私はあなたの質問がおもしろいと思って見てみることにしました。アクションフック 'admin_bar_menu'を処理し、優先度を70より高く設定する関数を追加すると、アクセスしようとしているプロパティを変更できる生のadmin_bar_menuノードにアクセスできます。以下はテーマのfunctions.phpファイルからadmin-menu-barを操作する方法の詳細な例です。
add_action( 'admin_bar_menu', 'customize_my_wp_admin_bar', 80 );
function customize_my_wp_admin_bar( $wp_admin_bar ) {
//Get a reference to the new-content node to modify.
$new_content_node = $wp_admin_bar->get_node('new-content');
// Parent Properties for new-content node:
//$new_content_node->id // 'new-content'
//$new_content_node->title // '<span class="ab-icon"></span><span class="ab-label">New</span>'
//$new_content_node->parent // false
//$new_content_node->href // 'http://www.somedomain.com/wp-admin/post-new.php'
//$new_content_node->group // false
//$new_content_node->meta['title'] // 'Add New'
//Change href
$new_content_node->href = '#';
//Update Node.
$wp_admin_bar->add_node($new_content_node);
//Remove an existing menu item.
$wp_admin_bar->remove_menu('new-post');
// Properties for new-post node:
//$new_content_node->id // 'new-post'
//$new_content_node->title // 'Post'
//$new_content_node->parent // 'new-content'
//$new_content_node->href // 'http://www.somedomain.com/wp-admin/post-new.php'
//$new_content_node->group // false
//$new_content_node->meta // array()
// Adding a new custom menu item that did not previously exist.
$wp_admin_bar->add_menu( array(
'id' => 'new-custom-menu',
'title' => 'Custom Menu',
'parent'=> 'new-content',
'href' => '#custom-menu-link',)
);
}
これを自分のfunctions.phpファイルに追加した場合は、管理メニューバーの次の変更に注意してください。
宜しくお願いします、
デビッドキャロル
David Carrollに素晴らしい答えを追加するには(ありがとう)、既存の管理バーメニューのノード名(スラッグ名)を取得し、それを変更する可能性を得るためには、この新しいコードを見なければなりません。コンテンツメニュー.
ul#wp-admin-bar-new-content-default li
にはすべてのID魔女がその名前で終わっています。例:li#wp-admin-bar-new-post
またはli#wp-admin-bar-new-media
ここで、new-post
またはnew-media
は、get_node()
関数で使用できる名前です。
私の目的のために、私はリンクの名前をnew Post にカスタムのものに変更することを付け加えます。
//Get a reference to the new-post node to modify.
$new_post_node = $wp_admin_bar->get_node('new-post');
//Change title
$new_post_node->title = __('Interventions', 'NAME-OF-YOUR-THEME');
//Update Node.
$wp_admin_bar->add_node($new_post_node);