ホームページ制作、ネットショップ開業・運用、SNS運用など、インターネットに関する事業支援を致します

[WordPress] Cocoonのadmin-barの管理メニューにカスタム投稿タイプのリンクを追加する

更新日
2022年6月15日
作成日
2022年6月11日

WordPresssテーマ「Cocoon」を利用していると管理者でログイン中に画面上部に管理者向けのメニューであるアドミンバー(admin-bar)に「管理メニュー」が表示されます。

「管理メニュー」にはダッシュボード・投稿一覧・固定ページ一覧…などへのリンクがあり使い勝手が良いため使用頻度が高いのですが、カスタム投稿を追加した場合にはそのカスタム投稿が自動的はされません。

その「管理メニュー」にカスタム投稿タイプ(編集画面へのリンク)を追加したいと思ったことはありませんか?

今回はその管理メニューに画面にカスタム投稿を追加する方法について記載します。

WordPress 6.0 とCocoon 2.4.5.4を利用して確認しています。

Cocoonのadmin-barの管理メニューにカスタム投稿タイプのリンクを追加するソースコード

Cocoonの管理者向けの「管理メニュー」がどのように追加されているか理解するために、cocoon > lib > admin.phpのファイルを確認してみると、add_action(‘admin_bar_menu’, ‘customize_admin_bar_menu’, 9999);という風にadmin_bar_menuにフックしていることがわかりました。customize_admin_bar_menu()関数の引数$wp_admin_barにadd_menuしてあげることで対応が可能のようです。

今回はカスタム投稿「food」を例にして追加します。

本記事ではfunctions.phpに直接記述する方法を記載しています(子テーマやオリジナルテーマの利用を想定)。現在使っているテーマが親テーマの場合はアップデートされると修正内容が上書きされる可能性があります。ご注意ください。また、バックアップも忘れずに行うことをおすすめします。

以下のようなソースコードをCocoonの子テーマのfunctions.phpに追加します。

function ictyorozu_customize_admin_bar_menu($wp_admin_bar) {
	$wp_admin_bar->add_menu(array(
		'parent' => 'dashboard_menu', // 親メニューID
		'id'   => 'dashboard_menu-posts-food', // 子メニューID
		'meta'   => array(),
		'title'  => __( 'Food', THEME_NAME ), // ラベル
		'href'   => admin_url('edit.php?post_type=food') // ページURL
	));
}
add_action('admin_bar_menu', 'ictyorozu_customize_admin_bar_menu', 10000);

ソースコードの補足

管理メニューにカスタム投稿を追加する際に気を付けるポイントは、idに指定する文字列dashboard_menu-posts-xxxxのxxxx箇所と、hrefに指定する文字列admin_url(‘edit.php?post_type=xxxx’)のxxxx箇所をカスタム投稿のスラッグを合わせることです。今回のカスタム投稿foodの場合であればfoodを入力するということになります。

また、Cocoonの本体のフック時に優先度9999が指定されていますので、10000以上を指定してあげることで、管理メニューの一番下(ダッシュボード・投稿一覧・固定ページ一覧…Food)に追加することが可能です。

優先度を9999に設定したり省略すると、管理メニューの一番最初(Food・ダッシュボード・投稿一覧・固定ページ一覧…)に追加されますので、その点は使い勝手を考慮して追加してください。

以上、Cocoonのadmin-barの管理メニューにカスタム投稿タイプのリンクを追加する方法についての紹介でした。

ICTよろず相談所ではWordPressの修正・機能追加をはじめ、WordPressに関するお困りごとへの対応を承っております。WordPressに関するご相談はお問い合わせからご連絡ください。

  • なんでも相談

    中田勝久ICTよろず相談所は、ホームページ制作、ネットショップ開業・運用、ブログ運用、SNS運用などインターネットに関する事業支援を行なっております。

    どんな些細な疑問や質問でも気軽にお問い合せ下さい。