カスタム投稿タイプにおける各表示ラベル(管理メニュー、ツールバー、ブラウザタブ、一覧、編集画面など)の設定は、新規登録時と、登録後の設定を変更する場合とで、使用する関数および記述方法が異なる。
・新規登録時の記述:register_post_type関数を使用
・登録後の変更時の記述:register_post_type_args フィルターフックを使用
※ 管理メニュー(Administration Menus):サイドの編集メニュー
ツールバー(Toolbar):上部の黒いバー(WordPress 3.2以前は管理バー/Admin Bar)
登録、設定(新規登録時のラベル設定)
<?php
/* =========================================================
* 投稿タイプ・タクソノミーの登録とラベルアレンジ
* ========================================================= */
// ノート(notes)カスタム投稿タイプおよびタクソノミー登録コード
function wp_test_register_notes_post_type() {
$post_type = 'notes';
$taxonomy = 'notes_taxonomy';
/* カスタム投稿タイプ登録、設定 */
register_post_type( $post_type, array(
/* 表示ラベル:管理画面メニュー、追加ボタン、ブラウザタブ名などをカスタム */
'labels' => array(
'name' => 'ノート', /* 基本となる複数形の名前 英語上の設定、記述して無視 */
'singular_name' => 'ノート', /* 単数形の名前 英語上の設定、記述して無視 */
'menu_name' => 'ノート', /* 管理メニュー(左サイドバー)の表示名 */
'name_admin_bar' => 'ノート', /* ツールバー(上部)の「新規」ドロップダウン内の表示名 */
'add_new' => 'ノートを追加', /* 管理メニューのサブメニュー「新規追加」の表示名 */
'add_new_item' => '新しいノートを追加', /*🔸ブラウザのタブ、管理メニュー、クラシックエディタのH1見出し */
'new_item' => '新しいノート', /* 一覧画面等で使われる新規作成テキスト */
'edit_item' => 'ノートを編集', /* 編集画面のH1見出し */
'view_item' => 'ノートを表示', /* 編集画面やツールバーの「投稿を表示」リンク名 */
'all_items' => 'ノート一覧', /* 管理メニューのサブメニュー「一覧」の表示名 */
'search_items' => 'ノートを検索', /* 検索ボタンおよび検索窓のプレースホルダー */
'not_found' => 'ノートが見つかりませんでした。', /* 記事が0件の時のメッセージ */
'not_found_in_trash' => 'ゴミ箱内にノートは見つかりませんでした。', /* ゴミ箱が空の時のメッセージ */
'view_items' => 'ノート一覧を表示', /* ツールバー用のアーカイブリンクテキスト */
'archives' => 'ノートアーカイブ' /* メニュー編集画面等でのアーカイブに対するラベル設定 */
),
'public' => true, /* フロントエンド(公開画面)および管理画面で利用可能にする */
'has_archive' => true, /* アーカイブページ(一覧ページ)の出力を有効にする */
'hierarchical' => true, /* 固定ページのように親子の階層構造を持たせる */
'show_in_rest' => true, /* ブロックエディター(Gutenberg)とWordPress REST APIを有効にする */
'menu_position' => 80, /*🔸管理メニューの表示位置(80は「設定」の下部付近) */
'menu_icon' => 'dashicons-book', /*🔸管理メニューに表示するアイコン(Dashiconsのbookを指定) */
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'revisions', 'page-attributes', 'post-formats' ), /* 投稿画面で有効にする機能(タイトル、本文エディター、アイキャッチ画像、カスタムフィールド、変更履歴、ページ属性、投稿フォーマット) */
'taxonomies' => array( 'category', 'post_tag' ), /* デフォルトのカテゴリーとタグをこのカスタム投稿タイプでも使用可能にする */
/* 新規作成時の編集エリアに自動挿入される初期配置のブロック構成 */
'template' => array(
array( 'core/pattern', array( 'slug' => 'wp-test/spacer-init' ) ),
array( 'core/paragraph', array( 'placeholder' => '段落' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/nest-sections' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/custom-html' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/custom-html-css' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/custom-html-js' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/nest-sections' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/nest-sections' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/html-tag-code' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/css-tag-code' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/javascript-tag-code' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/php-tag-code' ) ),
array( 'core/pattern', array( 'slug' => 'wp-test/nest-sections' ) ),
),
) );
/* カスタムタクソノミー登録、設定 */
register_taxonomy( $taxonomy, $post_type, array(
'hierarchical' => true, /* カテゴリーのように親子関係を持たせる(falseの場合はタグのような並列構造となる) */
'labels' => array(
'name' => 'ノートカテゴリー', /* タクソノミーの一般的な名前 */
'singular_name' => 'ノートカテゴリー', /* タクソノミーの単数形の名前 */
'menu_name' => 'ノートカテゴリー' /* 管理メニューに表示される名前 */
),
'show_ui' => true, /* 管理画面にこのタクソノミーの管理用ユーザーインターフェースを表示する */
'show_admin_column' => true, /* 投稿一覧画面のテーブルに、このタクソノミーが設定された列を追加する */
'show_in_rest' => true, /* ブロックエディターおよびWordPress REST APIで操作可能にする */
'query_var' => true, /* URLのクエリパラメーターとして使用可能にする */
'rewrite' => array( 'slug' => 'notes-tax', 'with_front' => false, 'hierarchical' => true ), /* パーマリンク構造の設定(URLのスラッグ指定や階層化の有効化) */
) );
}
add_action( 'init', 'wp_test_register_notes_post_type' );
ラベル位置の登録時指定
- register_post_type の menu_position パラメータに数値で位置指定する。上記 🔸 参照
5:「投稿」の下 10:「メディア」の下 15:「リンク」の下(標準では非表示) 20:「固定ページ」の下 25:「コメント」の下 60:「外観」の下(最初の区切り線の直後) 65:「プラグイン」の下 70:「ユーザー」の下 75:「ツール」の下 80:「設定」の下 100:「設定」の下の区切り線の後 - register_post_type の menu_icon
- register_post_type の show_in_menu の指定値
- ‘true’:(デフォルト):独立したトップレベルメニューとして左サイドバーに表示
- ‘false’:管理メニュー上に非表示
- ‘文字列’:(既存メニューのスラッグ) 指定した既存メニューの「サブメニュー(子要素)」として配置
– ‘options-general.php’: 「設定」のサブメニューとして配置
– ‘tools.php’: 「ツール」〃
– ‘index.php’: 「ダッシュボード」〃
– ‘edit.php’: 「投稿」〃
– ‘upload.php’: 「メディア」〃
– ‘edit.php?post_type=親投稿タイプ名’: 「他のカスタム投稿タイプ」〃
登録後のラベル変更
<?php
/* 登録済みの投稿タイプ設定を変更する記述例 */
function wp_test_change_post_type_args( $args, $post_type ) {
/* 'notes' という投稿タイプのみを変更対象にする */
if ( 'notes' === $post_type ) {
/*🔸ラベルの一部を後から上書き ノート → ノートA */
$args['labels']['name'] = 'ノートA';
$args['labels']['menu_name'] = 'ノートA';
/* ラベル以外の設定も後から変更可能 */
$args['show_in_rest'] = false;
}
return $args;
}
/* 登録処理に割り込んで設定を書き換えるフィルターフック */
add_filter( 'register_post_type_args', 'wp_test_change_post_type_args', 10, 2 );