All In One SEO で特定のページのみタイトルを変更する

  • WordPress

All In One SEO ではタイトルタグを自動的に書き換えて出力してくれます。「タイトルの設定」から各ページの設定を行うことができますが、例えば「ある特定の固定ページはこのフォーマットにしたい」という事は管理画面からはできません。

特定の固定ページのみ、別のテキストを使用する

デフォルトでは、固定ページのタイトルタグは%page_title% |%blog_title%」のように設定されているはずです。ここを今回は別のテキストに差し替えます。

All In One SEO フィルター一覧
http://hookr.io/plugins/all-in-one-seo-pack/2.3.9.2/filters/#index=a

まず、All In One SEO にはフィルターがいくつか用意されています。タイトルタグにまつわるものは何個かあり、説明が特にないので微妙に分かりにくいですが、固定ページのタイトル変更には aioseop_title_page のフィルターを使用します。

書き換え

functions.php に関数を書いていきます。 引数の$titleにタイトルが入ってくるので、今回は /sample にアクセスした時のみ「サンプルページ」というタイトルを出力することにします。

// All In One SEO の固定ページタイトルタグを特定のページのみ変更する
function filter_aioseop_title_page( $title ) { 
    // 固定ページ sample のタイトル変更 
    if ( is_page('sample') ) {
        $title = 'サンプルページ';
    }
    return $title; 
}; 
add_filter( 'aioseop_title_page', 'filter_aioseop_title_page', 10, 1 ); 

もし複数の固定ページを対象にしたいなら、is_page[ ('sample', 'test'] )のようにして配列として指定してあげます。

if の条件を増やすことで他の固定ページのテキストも変更することが可能ですが、あまりにも変更数が多いならそもそも All In One SEO の「タイトルの設定」は無効にしておいて、独自で設定するほうが良いかもしれません。

特定のページのみ、サイトタイトル( %page_title% )を変更したい

先ほどのようにテキストを全て変更してしまうのではなく、フォーマットは保ったまま All In One SEO で使用されている変数を書き換える方法です。

%page_title%では WordPress の「サイトタイトル」の項目が出力されるようになっていますが、ページによってこのサイトタイトル自体を書き換えます。

書き換え

サイトタイトルを取得するには、通常get_bloginfo('title')を使うのではないかと思います。こちらの内容を変更するフィルターも存在しますが、All In One SEO ではこちらを変更しても変わりません。詳しく調べていないのですが、どうやらget_option('blogname')の方を使用してタイトルを取得しているようなので、こちらを書き換えます。

functions.php でoption_{オプション名}のフィルターを使います。今回変更したいオプションは blogname なのでその名前でadd_filter()してあげます。

function change_blogname_option( $value, $option ) {
    if ( is_page('sample') ) {
        $value = 'サンプルサイト';
    }
    return $value;
}
add_filter( 'option_blogname', 'change_blogname_option', 10, 2 );

こちらで /sample のページのみ、サイトタイトルが「サンプルサイト」になります。サイトタイトルを出力している箇所全てに影響するので、その点だけご注意ください。

All In One SEO は便利なプラグインですが、メタ周りを色々とカスタマイズしたくなった時には逆に面倒になってしまうので、メリットデメリットを考えたうえで使用したほうが良いですね。