カテゴリ名を記事タイトルに自動で付与する方法 | WordPress開発

※当サイトはアフィリエイト広告を利用しています。

WordPressでカテゴリ名を記事タイトルに自動で付与する方法を紹介します。

これにより、記事のタイトルにカテゴリ名を追加する手間を省くことができます。

また、SEOにも良い影響を与えることができます。

具体的な実装方法について、以下で説明します。
スポンサーリンク


注意点

この方法はPHPを使用します。
コードエラーなどの場合にはブログが表示されなくなる可能性があります。

この方法で発生したトラブルなどの損害は自己責任とします。トラブルを自己で解決できる方のみ使用してください。

カテゴリ名を記事タイトルに自動で付与する方法

カテゴリ名を記事タイトルに自動で付与するにはテーマエディターのfunction.phpに以下のコードを追加します。
function AddCategoryToTitle_replaceTitle($title) {
    if(is_singular() && in_the_loop()) {
        if(count(get_the_category()) > 0) return $title . " | " . get_the_category()[0]->name;
        else return $title;
    }
    return $title;
}
add_filter('the_title','AddCategoryToTitle_replaceTitle');

function AddCategoryToTitle_replaceTitleTag($title) {
    if(is_singular()) {
        if(count(get_the_category()) > 0) return get_the_title . " | " . get_the_category()[0]->name;
        else return $title;
    }
    return $title;
}
add_filter('pre_get_document_title', 'AddCategoryToTitle_replaceTitleTag');
このコードを適用にする前のタイトルが下図だったとして、
コード適用前
コードを適用した後のタイトルは下図ようになります。
コード適用後
タイトルの末尾にカテゴリ名を自動で付与できていることが分かりますね。

また、ソースコードのTITLEタグも下図のようになっていてカテゴリ名が付与できていることが分かります。
TITLEタグ

解説

上記コードは関数を定義して、the_titleとpre_get_the_categoryのフィルターにフックしているコードになっています。

この2つのフィルターの違いは以下の記事にまとめていますが、ざっくり言うとthe_titleはタイトルの表示に対応して、pre_get_document_titleはTITLEタグに対応します。 そして、フィルターのフック関数内で既存のタイトルの末尾にカテゴリ名を付与しています。

カテゴリ名の取得方法は以下の記事を参照ください。 なお、記事のみを書き換えるためにif(is_singular())としています。

まとめ

この記事ではWordPressにおいてカテゴリ名を記事タイトルに自動で付与する方法を紹介しました。

カテゴリ名を自動付与することでSEOやアクセス解析に役立てましょう。