WordPressのタイトル入力欄のプレースホルダー「ここにタイトルを入力」を register_post_type で指定する方法

カスタム投稿タイプを利用する場合に、件名の初期値が(プレースホルダーなんて洒落た言い方しますよね。)「ここにタイトルを入力」だと、わかりにくいケースってありませんか?

そうです。こいつです。

title_placeholder-default

このテキストを変更する方法は、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;
}

あら、簡単。

title_placeholder-custom

どうでしょう?この方が、初めて入力する人もわかりやすいですよね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です