[WordPress]All in One SEO Packでアーカイブページのタイトルやディスクリプションなどメタ情報を変更する

  • 公開日:2019/10/13
この記事は最終更新日から4年以上が経過しています。

WordPressでのサイト運営には欠かせないプラグイン「All in One SEO Pack」ではアーカイブページにディスクリプション(description)を管理画面からの設定では表示することができません。

アーカイブページをnoindexにしている場合はディスクリプションは不要ですが、カテゴリーページとかだとインデックスさせたいこともあると思います。

アーカイブページにディスクリプションを表示したい場合は、functions.phpで以下のようにフックすることで設定できます。

add_filter('aioseop_description', 'custom_aioseop_description');
function custom_aioseop_description($description)
{
    if ( 条件 )
    {
        $description = '変更したいディスクリプション';
    }
    return $description;
}

具体的にはこんな感じ。

add_filter('aioseop_description', 'custom_aioseop_description');
function custom_aioseop_description($description)
{
    if ( is_post_type_archive('カスタム投稿タイプ') && !is_paged() )
    {
        $description = 'カスタム投稿タイプの一覧ページです';
    }
    else if ( is_post_type_archive('カスタム投稿タイプ') && is_paged() )
    {
        global $wp_query;
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $description = 'カスタム投稿タイプ一覧ページの'. $paged. 'ページ目です。';
    }
    else if ( is_category() && !is_paged() )
    {
        $description = 'カテゴリー「'. get_queried_object()->name .'」の一覧ページです。';
    }
    else if ( is_category() && is_paged() )
    {
        global $wp_query;
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $description = 'カテゴリー「'. get_queried_object()->name .'」一覧ページの'. $paged. 'ページ目です。';
    }
    else if ( is_archive() && !is_paged() )
    {
        $description = '投稿の一覧ページです';
    }
    else if ( is_archive() && is_paged() )
    {
        global $wp_query;
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $description = '投稿一覧ページの'. $paged. 'ページ目です。';
    }
    return $description;
}

カテゴリーはカテゴリー名を自動で取得できるようにしています。
また、アーカイブページにはページャを用意していることがほとんだと思うので1ページ目と2ページ目以降のディスクリプションを分けてみました。

同じ要領でタイトル、キーワードやcanonicalも変更することが可能です。

// タイトルを変更
add_filter('aioseop_title', 'custom_aioseop_title');
function custom_aioseop_title($title)
{
    if ( 条件 )
    {
        $title = '変更したいタイトル | '. get_bloginfo('name');
    }
    return $title;
}

上記でタイトルを任意に変更できます。
変更したいタイトルの後ろに「 | サイト名」が入るようにしてみました。

// キーワードを変更
add_filter('aioseop_keywords', 'custom_aioseop_keywords');
function custom_aioseop_keywords($keywords)
{
    if ( 条件 )
    {
        $keywords = '変更したいキーワード';
    }
    return $keywords;
}

キーワードはSEOにはもう必要ないという話しもありますが・・・

// canonicalを変更
add_filter('aioseop_canonical_url', 'custom_aioseop_canonical_url');
function custom_aioseop_canonical_url($canonical_url)
{
    if ( 条件 )
    {
        $canonical_url = 'example.com/new_archive_name';
    }
    return $canonical_url;
}

後は、条件をいかに指定するかがポイントとなりそうです。