WordPressが自動で出力するタイトルタグやアーカイブタイトルは「カテゴリー:〇〇」や「アーカイブ:〇〇」など、ダサくなりがちです。
WordPressが出力するタイトルをカスタマイズする方法をまとめましたので、変更したい方は参考にしてください!
WordPressが出力する各種タイトルのカスタマイズ方法をまとめました!
タイトルタグ:title-tag
WordPress4.4からタイトルタグは<head>
タグ内に記載しなくても、functions.phpに以下の記述をすれば、WordPressが標準で表示してくれるようになりました。
add_theme_support( 'title-tag' );
カスタマイズする方法は以下のとおりです。
function change_title_tag( $title ) {
if ( is_category() ) { /* カテゴリーアーカイブの場合 */
$title = single_cat_title( '', false );
} elseif ( is_tag() ) { /* タグアーカイブの場合 */
$title = single_tag_title( '', false );
} elseif ( is_post_type_archive( 'parts' ) ) { /* parts投稿タイプのアーカイブの場合 */
$title = '任意のタイトル';
}
return $title;
}
add_filter( 'pre_get_document_title', 'change_title_tag' );
Codex:pre_get_document_title | Hook | WordPress Developer Resources
タイトルタグ(旧):wp_title
WordPress4.4以降からwp_title()
によるタイトルタグの出力は非推奨になっているのですが、古いテーマでは未だに使われています。
そういったテーマをカスタマイズする機会もまだ多くあると思うので、wp_title()
のカスタマイズ方法も見ておきましょう。
function change_old_title_tag( $title, $sep ) {
if ( is_category() ) { /* カテゴリーアーカイブの場合 */
$title = single_cat_title( '', false );
} elseif ( is_tag() ) { /* タグアーカイブの場合 */
$title = single_tag_title( '', false );
} elseif ( is_post_type_archive( 'parts' ) ) { /* parts投稿タイプのアーカイブの場合 */
$title = '任意のタイトル';
}
return $title;
}
add_filter( 'wp_title', 'change_old_title_tag' );
Codex:テンプレートタグ/wp title – WordPress Codex 日本語版
タイトルタグ(All in One SEO)
ちょっとハマったので、こちらも共有です。
プラグイン「All in One SEO」を使用している場合は、pre_get_document_title()
が効きません!(詳しくは調べてないですが、たぶんAll in One SEOの処理で上書きされてる)
「All in One SEO」のフィルターフックを使って書き換えてあげる必要があります。
function change_aioseop_title( $title ) {
if ( is_category() ) { /* カテゴリーアーカイブの場合 */
$title = single_cat_title( '', false );
} elseif ( is_tag() ) { /* タグアーカイブの場合 */
$title = single_tag_title( '', false );
} elseif ( is_post_type_archive( 'parts' ) ) { /* parts投稿タイプのアーカイブの場合 */
$title = '任意のタイトル';
}
return $title;
}
add_filter( 'aioseop_title', 'change_aioseop_title' );
ディスクリプション(All in One SEO)
ちょっとおまけで「All in One SEO」でディスクリプションを書き換える場合です。
function change_aioseop_description( $description ) {
if ( is_post_type_archive( 'parts' ) ) { /* parts投稿タイプのアーカイブの場合 */
$description = '任意のディスクリプション';
}
return $description;
}
add_filter( 'aioseop_description', 'change_aioseop_description' );
アーカイブのタイトル:the_archive_title
the_archive_title
はWordPressの一覧ページでh1に相当するようなタイトルを取得する際に使用される関数です。
Codex:関数リファレンス/the archive title – WordPress Codex 日本語版
「カテゴリー:〇〇」や「アーカイブ:〇〇」という出力結果になるので、カスタマイズしたくなりがちです。
function change_archive_title( $title ) {
if ( is_category() ) { /* カテゴリーアーカイブの場合 */
$title = single_cat_title( '', false );
} elseif ( is_tag() ) { /* タグアーカイブの場合 */
$title = single_tag_title( '', false );
} elseif ( is_tax( 'event', 'hover' ) ) { /* タームアーカイブの場合(eventタクソノミー、hoverターム) */
$title = single_term_title( "", false );
} elseif ( is_post_type_archive( 'parts' ) ) {
$title = post_type_archive_title( "", false ); /* parts投稿タイプのアーカイブの場合 */
}
return $title;
};
add_filter( 'get_the_archive_title', 'change_archive_title' );
個別記事:the_title
個別記事のタイトルを出力するthe_title()
。あまりカスマイズする機会はないかもしれませんが、以下のような感じでカスタマイズすることは可能です。
function change_page_title( $title ) {
global $post;
if ( $post->ID == 10 ) {
$title = '任意のタイトル';
}
return $title;
}
add_filter( 'the_title','change_page_title' );