WordPressの投稿画面で「ここにタイトルを入力」をカスタマイズする方法
投稿のタイトル入力欄に「ここにタイトルを入力」とある初期値(プレースホルダー)をもっとわかりやすくしたいという要望がありました。
カスタム投稿タイプを多数使用したそれなりに規模の大きいサイトだったので、わかりやすさを重視&投稿間違いを防ぐために行ったカスタマイズです。
単純なブログとして運用していく分には必要ないことかもしれませんが、カスタム投稿タイプを複数使うなどしている場合に便利なカスタマイズかもしれません。
このカスタマイズが必要になる場面は多くないと思いますが、記念のメモ。
目次
- 「ここにタイトルを入力」を変更する
- 条件分岐でテキストを出し分ける
- カスタム投稿タイプのタイトル部分だけ変更したいとき
Advertising
「ここにタイトルを入力」を変更する
まずは基本のカスタマイズです。
functions.phpに下記のコードを記述します。
function change_title_text_all( $title ){
return $title = 'タイトルのプレースホルダーを変更したいよ!';
}
add_filter( 'enter_title_here', 'change_title_text_all' );
「タイトルのプレースホルダーを変更したいよ!」の部分を任意の文言に変えてください。
この記述をすると、投稿・固定ページ、カスタム投稿のすべての「ここにタイトルを入力」が指定した文言に変更になります。
条件分岐でテキストを出し分ける
せっかく変更しても、すべて同じに変更されてしまったのでは当初の問題であった「わかりやすく」が達成されません。
そこで、条件分岐でそれぞれの投稿タイプでプレースホルダーの文言を出し分けます。
今回は通常の「投稿」「固定ページ」のほかに、「カスタム投稿タイプ:interview」があるサイトとします。
function change_default_title( $title ) {
$screen = get_current_screen();
if ( $screen->post_type == 'post' ) { //投稿
$title = 'ブログのタイトルを入力';
}elseif ( $screen->post_type == 'page' ) { //固定ページ
$title = '固定ページのタイトルを入力';
}elseif ( $screen->post_type == 'interview' ) { //カスタム投稿タイプ:interviewt
$title = 'インタビューを受けた社員の名前を入力';
}
return $title;
}
add_filter( 'enter_title_here', 'change_default_title' );
$screen->post_type == ' '
で投稿タイプを指定します。
7行目$screen->post_type == 'interview'
のinterviewの部分はカスタム投稿タイプ名です。
必要に応じて増やしていけば、複数のカスタム投稿タイプを作成した場合にも対応できます。
カスタム投稿タイプのタイトル部分だけ変更したいとき
上の記述でもやりたいことは実現できたのですが、あとは今後の管理の問題です。
カスタム投稿タイプが複数あって、しかもそれなりの数になる場合、functions.phpをあちこち彷徨うことになります。めんどくさいですね。
カスタム投稿タイプの「labels」の指定で色々記述してるんだからそこでまとめて管理できたらいいのに。
と思って探したところ、ピッタリの方法がみつかりました。
こちらのサイトを参考にさせていただきました。
WordPressのタイトル入力欄のプレースホルダー「ここにタイトルを入力」を register_post_type で指定する方法
http://www.warna.info/archives/2929/
labelsに'enter_title_here' => _x( 'インタビューを受けた社員の名前を入力', 'interview' ),
を追加で記述します。(16行目)
(カスタム投稿タイプ設置についての説明は省略します。)
add_action( 'init', 'register_cpt_interview' );
function register_cpt_interview() {
$labels = array(
'name' => _x( 'インタビュー', 'interview' ),
'singular_name' => _x( 'インタビュー', 'interview' ),
'add_new' => _x( '新規追加', 'interview' ),
'add_new_item' => _x( '新しいインタビューを追加', 'interview' ),
'edit_item' => _x( 'インタビューを編集', 'interview' ),
'new_item' => _x( '新しいインタビュー', 'interview' ),
'view_item' => _x( 'インタビューを見る', 'interview' ),
'search_items' => _x( 'インタビューを検索', 'interview' ),
'not_found' => _x( 'インタビューは見つかりませんでした', 'interview' ),
'not_found_in_trash' => _x( 'ゴミ箱にインタビューはありません', 'interview' ),
'parent_item_colon' => _x( '親インタビュー', 'interview' ),
'menu_name' => _x( 'インタビュー', 'interview' ),
'enter_title_here' => _x( 'インタビューを受けた社員の名前を入力', 'interview' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => true,
'capability_type' => 'post'
);
register_post_type( 'interview', $args );
}
そして、参考サイトの記事内に
あとは、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;
}
を上のコードの下に追加します。
これでカスタム投稿タイプの設定でタイトルのプレースホルダーの指定も一緒にできるようになったわけです!
カスタム投稿タイプが複数あった場合も、このコードを一番下に1度記述すればOKでした。
参考サイト
WordPress投稿画面の「ここにタイトルを入力」を別の文章に変更する方法
WordPressのタイトル入力欄のプレースホルダー「ここにタイトルを入力」を register_post_type で指定する方法