パンくずリストの表示を変えたい
パンくずリストを表示するプラグインを使ってパンくずを表示しているときに、ふと404ページの表示を見て「あら?」っと思いました。
サイトのタイトルが404ページのタイトルの後ろにハイフンつなぎで表示されている!
まぁ、当たり前といえば当たり前なのですが、このパンくずリストのプラグインは、例えば投稿ページだったらページのタイトルでなく投稿のタイトルが設定されます。404ページは、 wp_get_document_title関数で取得した値を表示しているので、ページのタイトルをそのまま設定しています。このサイトのタイトルを除外したい。
document_title_partsフィルターフック
wp_get_document_title関数の中身を見てみました。wp-includesフォルダ内にあるgeneral-template.php
で定義されており、タイトルに対してフィルターフック(document_title_parts)を設定している箇所があったので、これを利用します。とりあえず取得できる中身を確認。
/** * Change 404 title. * * @param array $title * @return array $title */ function change_404_title( $title ) { var_dump($title); return $title; } add_filter( 'document_title_parts', 'change_404_title' );
ダンプした結果はこちら。
array(2) { ["title"]=> string(42) "ページが見つかりませんでした" ["site"]=> string(17) "てらこや.work" }
この連想配列をセパレータ「-」(デフォルト)で結合してタイトルを出力しています。なので、この時点で連想配列の["site"]
を空にしてあげればうまくいきそう。
/** * Change 404 title. * * @param array $title * @return array $title */ function change_404_title( $title ) { if ( is_404() ) { $title['site'] = ''; } return $title; } add_filter( 'document_title_parts', 'change_404_title' );
表示してみると……
できた!\(^o^)/
タイトルをオリジナルに変更するのであれば、 $title[‘title’] = ‘404 Not Found’;といった感じで、連想配列のtitleの方を書き換えてあげればOKでした。