【ha-Basic】テーマには基本的なSEO対策機能として
- キーワード欄に入力したものがmeta keywordsタグとして出力
- キーワード欄に入力がない場合には空のmeta keywordsタグが出力
- ページの説明欄に入力したものがmeta descriptionタグとして出力
- ページの説明欄に入力がない場合にはhtmlタグ、ショートコードを省いた本文先頭の文章がmeta descriptionタグとして出力
- No index項目にチェックが入っているものはno indexタグを出力
- No follow項目にチェックが入っているものはno followタグを出力
- json-LD形式の構造化データを自動出力(抜粋項目はページの説明欄の入力値、なければ本文先頭の文章を出力)
- json-LD形式のパンくずリストの構造化データを自動出力
といった、最終的に生成されるhtml形式のページデータの中へ自動で主に検索エンジンに知らせるべき情報を出力するようにしています。
こうした機能はテーマに備わっている場合とプラグインを使って機能追加している場合があり、サイトによってさまざまです。
今回は後者のプラグインを使っている場合を例に、併用時の対応についてご案内します。この機能を持つ有名なプラグインに「All In One Seo Pack」などがあります。
そもそもなんでこの作業が必要なの?
作業前に素朴な疑問を持たれる方も見えるかと思いますので、この作業の意味・意義について紹介させていただきます。
SEO対策云々という機能を持つテーマやプラグインには「このページはどんなことが書かれているの?」を探る材料として「meta 〇〇」というhtmlタグ(コード)がページの先頭に出力されるようになっていて、検索エンジンはページの概要を把握できるようになっています。
また、構造化データはGoogleの検索結果に表示される内容を指定するほか、「meta 〇〇」と同様にページの内容を把握する材料になっています。
Googleではこれらとともに実際のページ全体の内容を精査して検索順位を決定する仕組みになっています(その他の検索エンジンについては公表されていないため不明です)。
【ha-Basic】にはこの内容を設定できるよう、投稿編集画面の本文下に「SEO設定」という入力枠を設けており、冒頭で書いたようなプロセスで出力されるようにしています。
ここで問題なのは、SEO対策系のプラグインを既に使っている場合、タグが2重に出力されてしまうということです。プラグインで出力されているからテーマでは出力しない、またはその逆といったことが確実にできればいいのですが、SEO対策用のプラグインは多数存在しますのですべてに対して判定をすることは不可能ですから仕方ないことと考えています。
が、2重に出力するとどうなるか?の例をいくつか挙げると(なぜか関西弁で失礼します)
※プラグイン側の入力値を①、テーマ側の入力値を②として見てください。
※極端な例で必ずしもそう判断されるとは限りません
両方にデータがある場合
「①の内容のページなんやな・・・ん?もう一個違うデータ②があるやんけ!!えーい信用ならんページや!!」
プラグイン側、またはテーマ側のみにデータがある場合
「①でデータはないと言っとるのに後から②っちゅうデータがあるやんけ!えーいどっちなんや??」
「①にデータはあるのに後から出てきた②にはデータがないと言いよる、いったいどっちなんや??」
こんな感じで混乱させてしまいます。
そこで今回のようにどちらかに統一する作業が必要となるのです。
余談になりますが、これは【ha-Basic】テーマにしたからということではなく、こうした機能を実装しているほとんどのテーマ、使用しているプラグインで同様の確認と対応が必要となりますので、【ha-Basic】を使っていない場合でも確認してみるといいでしょう。重複出力されていませんか??
ケース1 プラグインを使い続ける場合
【ha-Basic】テーマでの対応としてはテーマ側で出力される記述を削除します。
以下の手順通りに作業していただければ大丈夫です。
管理画面から「外観」→「テーマエディタ」をクリックします。
画面右側にある「header.php」をクリックします。
中に書かれているコードのうち該当するものを削除します
キーワードと説明文
9行目付近から始まる以下のコードを削除します
<!--個別ページ用のmetaデータ-->
<?php if( is_single() || is_page() ): ?>
<?php custom_seo_meta();?>
<meta name="thumbnail" content="<?php echo the_post_thumbnail_url('thumbnail'); ?>" />
<!--
<PageMap>
<DataObject type="thumbnail">
<Attribute name="src" value="<?php echo the_post_thumbnail_url('thumbnail'); ?>"/>
<Attribute name="width" value="100"/>
<Attribute name="height" value="130"/>
</DataObject>
</PageMap>
-->
<?php else: ?><!--個別ページ以外のメタデータ-->
<meta name="description" content="<?php bloginfo( 'description' ); ?>">
<?php $allcats = get_categories();
$kwds = array();
foreach($allcats as $allcat) {
$kwds[] = $allcat->name;
} ?>
<meta name="keywords" content="<?php echo implode( ',',$kwds ); ?>">
<meta name="thumbnail" content="<?php echo get_template_directory_uri() ?>/images/webclipicon.png" />
<!--
<PageMap>
<DataObject type="thumbnail">
<Attribute name="src" value="<?php echo get_template_directory_uri() ?>/images/webclipicon.png"/>
<Attribute name="width" value="100"/>
<Attribute name="height" value="130"/>
</DataObject>
</PageMap>
-->
<?php endif; ?>
作業後は投稿編集画面上で【ha-Basic】用のSEO関連の入力画面が不要となりますので、投稿編集画面を開き、画面一番上にある「表示」をクリックして「SEO対策」という項目のチェックを外して非表示にしておきましょう
構造化データ
50行目付近から始まる以下のコードを削除します
<?php get_template_part('schema');//構造化コード?>
<?php get_template_part('schema_breadcrumb');//ぱんくずリストの構造化コード?>
ケース2 プラグインを停止する場合、以前のテーマで設定した内容を継承する場合
プラグインを停止して【ha-Basic】の機能を使用する場合には以下2つの方法から選択して設定をお願いします。
プラグインで入力しているデータを手動で全記事にコピーしていく
手間はかかりますが一番確実な方法です。各記事の編集画面を開き、現状プラグインの入力窓に入力してあるデータを【ha-Basic】テーマのSEO設定画面へ直接移動させて保存という作業を全記事に対して繰り返します。
以前のテーマで設定していたものを手動で移行する場合は、カスタムフィールド値を表示して移動をしていきます(カスタムフィールドの表示方法、データの確認方法については後述します)。
投稿を保存する場合には更新日を更新するか否かのチェックを必ず確認ください(「更新する」になっている場合、更新日が修正した日になります。時事的な記事では当時のこととして掲載されているものが多く現状に則さない場合もあるでしょうから、訪問された方が最新の記事だと勘違いされることがないよう「更新しない」にチェックをいれてから記事の更新を行って下さい)
プラグイン(以前のテーマ)が作ったデータを【ha-Basic】テーマで継続して使えるようにする
ほとんどのSEO対策関連プラグインは独自のカスタムフィールドを用意して、そこへ値を格納するように作られています。独自のカスタムフィールドについては投稿編集画面一番上にある「表示」をクリックし、「カスタムフィールド」にチェックを入れた後、投稿編集画面下部へ移動すると確認できます。
カスタムフィールド欄の左にある「名前」に対して「値」となっている部分が対になって動作していますので、プラグインで生成されている「名前」をメモ帳などにコピーします。
- 【ha-Basic】ではキーワード、説明、Noindexにするか?、Nofollowにするか?のみが設定できるようになっていますので、その他の項目については本作業を行っても踏襲されませんのでご注意下さい
- 既に【ha-Basic】テーマとプラグイン(または以前使用していたテーマ)とで重複入力したりしている場合にはどちらを生かすかを決め、すべての記事で統一されている状態にしてから行ってください。
- この作業は、今まで設定してきたカスタムフィールドの「名前」と「値」を【ha-Basic】で使うようにし、プラグインを停止しても機能するようにする方法です。テーマでは名前や入力値がなければ投稿の保存時に新しく作るように動作させていますが、何等かの不具合が生じ、今までの入力値がクリアされてしまう場合もありますので、サイトの完全なバックアップを取り、万が一の場合には復元できるようにした上で作業を行ってください。
- ここまで読んで「カスタムフィールド??」「バックアップ??」と疑問に思われた方はこの作業での移行作業は大変危険ですので、前述した手動の方法を使う、もしくはプラグインのそのまま使う方法で対応ください。
まず該当するプラグインを停止します。
管理画面から「外観」→「テーマエディタ」を開きます。
画面右の一覧から「seo_fields.php」をクリックします
コード内にある以下の文字列を、先ほどメモした「名前」を置き換えていきます
- meta_keywordsという文字列をメモしたキーワードの「名前」に置き換える
- meta_descriptionという文字列をメモした説明文の「名前」に置き換える
- is_noindexという文字列をメモしたNoindexの「名前」に置き換える
- is_nofollowという文字列をメモしたNofollowの「名前」に置き換える
すべて書き換えたら保存すれば完了です。
作業が終わったら・・・
いずれかの方法で問題なく作業が終わったら、いくつかのページのソースを開いて確実に切り替わっているか?2重出力されてないかのチェックを行ってください。
最後に、【ha-Basic】へ切り替える前に長らく【Simplicity2】テーマを使用させていただいていた関係から、カスタムフィールドの「名前」は【Simplicity2】と同じにしてあります。もしも【Simplicity2】テーマからの移行の場合にはフィールド名は共通ですので上記の作業を行う必要はありません。
※【Simplicity2】テーマにあるカスタムタイトル機能は【ha-Basic】にはありませんのでご了承ください