ダミー

All in One SEO が正しいtitleタグを書き出してくれないので、〇〇したいみなさまへ

2021年4月21日

All in One SEO(以降aioseo)はSEOに必要な機能が揃ったプラグインですが、4.0~ではトップページを固定ページにするとtitleタグにその記事のタイトルが正しく書き出されません。これは不具合ではなく仕様だそうです。そのためネット上では3.7.1にダウングレードする方が散見されます。
ここで「そうまでしてaioseo使い続けたいか?」と疑問が湧きます。結論として「重いし場所も取るし要らないよね」。入力画面に大きく居座ってタブもいっぱいあって、初心者にはわかりにくいし、もうそろそろ〇〇(停止?削除?お別れ?)しよう。
というわけで、aioseoを使わずSEOに必要なタグをテーマに書き出す方法をご紹介します。

ディスクリプション入力フィールドの設置

投稿記事は「抜粋」をディスクリプションにします。固定ページは抜粋がないのでディスクリプションを入力するカスタムフィールドを作ります。
今回はCustom Field Suite(以降CFS)というプラグインで「seo_description」という名前のフィールドを作りました。なので、当記事ではCFSで入力された値を取得する説明になりますが、お好きな方法でカスタムフィールドを作ってください。

aioseのメタディスクリプションを抜粋に移動

「抜粋」をディスクリプションにする?今までせっせとaioseoのメタディスクリプションに入力していたけど抜粋は空です。過去の記事全部メタディスクリプションを抜粋にコピー&ペーストしないといけないの!? と筆者も思いましたが、それをやってくれるプラグインが公開されていました。

ディスクリプション

functions.phpに以下を追加し、my_description()という関数を作ります。

function my_description() {
    $SEO_description = CFS()->get( 'seo_description' );
    if(has_excerpt()){
        $description = get_the_excerpt();
    }elseif(!empty($SEO_description)){
        $description = CFS()->get( 'seo_description' );
    }else{
      $description = 'ここに抜粋もseo_descriptionも入力されていなかったとき用の固定のディスクリプションを書きます。';
    }
    return $description;
}

ogp画像

アイキャッチ画像(サムネイル)をogpにするため、functions.phpに以下を追加し、my_ogp()という関数を作ります。

function my_ogp() {
    if(has_post_thumbnail()){
        $ogp_image = get_the_post_thumbnail_url( get_the_ID() );
    }else{
        $ogp_image = home_url().'サムネイルがないいときに表示されるogp画像をホームからのpath付きで指定';
    }
    return $ogp_image;
}

タグの書き出し

header.phpなどにあるテーマのヘッダ部分に必要なタグを書いていきます。
まずcharsetの直下にtitleタグを挿入します。

    <meta charset="UTF-8">
    <title><?php the_title(); ?> | サイト名</title>
適切な位置にdescriptionとcanonicalを書きます。
    <meta name="description" content="<?php echo my_description(); ?>">
    <link rel="canonical" href="<?php the_permalink(); ?>" />
ogpに関する記述例です。
    <meta property="og:site_name" content="<?php the_title(); ?> | サイト名">
    <meta property="og:type" content="article">
    <meta property="og:title" content="<?php the_title(); ?> | サイト名">
    <meta property="og:description" content="<?php echo my_description(); ?>">
    <meta property="og:url" content="<?php the_permalink(); ?>">
    <meta property="og:image" content="<?php echo my_ogp(); ?>">
    <meta property="og:image:secure_url" content="<?php echo my_ogp(); ?>">
    <meta name="twitter:card" content="summary">
    <meta name="twitter:domain" content="<?php echo $_SERVER["HTTP_HOST"];?>">
    <meta name="twitter:title" content="<?php the_title(); ?> | サイト名">
    <meta name="twitter:description" content="<?php echo my_description(); ?>">
    <meta name="twitter:image" content="<?php echo my_ogp(); ?>">
    <meta name="twitter:site" content="TwitterのID">

参照サイト

当記事では以下のサイト参照いたしました。制作者に感謝いたします。

【2021年版】All in One SEO 4.x~の不具合とダウングレードの方法

Copy SEO Meta Desc “Custom Field” to Excerpt field?

All in one SEOのdescriptionを本文抜粋に移行する