カスタム投稿タイプを利用する場合に、件名の初期値が(プレースホルダーなんて洒落た言い方しますよね。)「ここにタイトルを入力」だと、わかりにくいケースってありませんか?
そうです。こいつです。
このテキストを変更する方法は、enter_title_here というフックを使って、投稿タイプ毎に変更できるようになっています。
参考)
ここにタイトルを入力 を変更する | WordPress
だがしかし!
register_post_type のパラメーターには、うんざりするほど、labels の指定があるのに、このタイトル欄のプレースホルダーの指定がないのは、おじさん納得できません。
というわけで、register_post_type の labels に enter_title_here を指定すれば、プレースホルダーに反映されるようにしてみたいと思います。
お手軽なことに、labels の指定項目に、enter_title_here を追加すると、それだけで投稿タイプのオブジェクトに enter_title_here が加わってくれます。
register_post_type( 'accommodation', array( 'label' => '宿泊施設', 'labels' => array( 'name' => '宿泊施設', 'singular_name' => '宿泊施設', 'add_new_item' => '新規宿泊施設', 'edit_item' => '宿泊施設を編集', 'new_item' => '新しい宿泊施設', 'view_item' => '宿泊施設を表示', 'search_items' => '宿泊施設を検索', 'not_found' => '宿泊施設がみつかりませんでした', 'not_found_in_trash' => 'ゴミ箱に宿泊施設は入っていません', 'all_items' => '全ての施設', 'enter_title_here' => 'ここに施設名を入力', ), 'public' => true, 'show_ui' => true, 'capability_type' => 'post', 'map_meta_cap' => true, 'has_archive' => true, 'menu_position' => 5, 'rewrite' => array( 'feeds' => false, ), 'supports' => array( 'title', 'editor', 'thumbnail' ) ) );
投稿タイプオブジェクトの内容
["labels"]=> object(stdClass)#96 (15) { ["name"]=> string(12) "宿泊施設" ["singular_name"]=> string(12) "宿泊施設" ["add_new"]=> string(12) "新規追加" ["add_new_item"]=> string(18) "新規宿泊施設" ["edit_item"]=> string(21) "宿泊施設を編集" ["new_item"]=> string(21) "新しい宿泊施設" ["view_item"]=> string(21) "宿泊施設を表示" ["search_items"]=> string(21) "宿泊施設を検索" ["not_found"]=> string(45) "宿泊施設がみつかりませんでした" ["not_found_in_trash"]=> string(48) "ゴミ箱に宿泊施設は入っていません" ["parent_item_colon"]=> NULL ["all_items"]=> string(15) "全ての施設" ["menu_name"]=> string(12) "宿泊施設" ["enter_title_here"]=> string(27) "ここに施設名を入力" ["name_admin_bar"]=> string(12) "宿泊施設" }
※ 長いので labels部分のみ抜き出し
あとは、enter_title_here フックで、投稿タイプオブジェクトの labels を参照し、enter_title_here が指定されていれば、差し替えるようにすれば大丈夫です。
add_filter( 'enter_title_here', 'custom_enter_title_here', 10, 2 ); function custom_enter_title_here( $enter_title_here, $post ) { $post_type = get_post_type_object( $post->post_type ); if ( isset( $post_type->labels->enter_title_here ) && $post_type->labels->enter_title_here && is_string( $post_type->labels->enter_title_here ) ) { $enter_title_here = esc_html( $post_type->labels->enter_title_here ); } return $enter_title_here; }
あら、簡単。
どうでしょう?この方が、初めて入力する人もわかりやすいですよね。