アダルトアフィリエイト実践記

meta descriptionの重複を避けるカスタマイズ方法

 


現在使用しているワードプレステーマ「THE WORLD」ではデフォルトの設定のままだと、カテゴリーページとタグページのメタディスクリプションがトップページと重複してしまいます。

そこで、メタディスクリプションの重複を避けるようにテーマをカスタマイズする方法を見つけましたのでご紹介します。

HTML改善にメタディスクリプションの重複が発生

ふとサーチコンソールを眺めていると「メタディスクリプションが重複していますよ」と言う注意が見つかりました。

meta description 3

この問題はあまり深刻な問題ではないようで、「HTMLの改善」とあるように、できれば改善した方が良い程度の問題のようですが、内容が重複しているとグーグルに判断されているのはあまり気持ちの良いものではありません。

重複しているのはカテゴリーページなどのアーカイブページ

重複しているページを見てみるとカテゴリーページが多いことがわかりました。

原因を調べてみるとワードプレステーマ「THE WORLD」のメタディスクリプションの指定方法にありました。

THE WORLDでのメタディスクリプションカスタマイズ方法

meta description 4

まずは、現在使用しているテーマのメタディスクリプションの指定の条件を確認してみました。

私の使用しているワードプレステーマ「THE WORLD」ではメタディスクリプションを指定するのに3つのルールがあります。

  1. メタディスクリプションを個別記事ごとに指定することができる
  2. メタディスクリプションを個別に指定しない場合は冒頭の60文字がメタディスクリプションに指定される
  3. その他のカテゴリーページやタグページは詳細オプションより指定した基本のメタディスクリプションが指定される

問題はこの3番で、このルールがあるとカテゴリーページやタグページにもトップページに指定したメタディスクリプションがコピーされてしまいます。

これを見たグーグルが「重複している」と判断しているわけです。

変更前のメタディスクリプションのソースはこちら

次にソースがどうなっているか調べてみました。

※メタディスクリプションを指定しているソースは「外観」「テーマの編集」の「テーマヘッダー (header.php)」にあります。

【ソース】

<?php if (get_post_meta($post->ID, "metades", true)){ // 個別設定している場合 ?>
<meta name="description" content="<?php $key="metades"; echo get_post_meta($post->ID, $key, true); ?>" />
<?php } else { // 個別設定していない場合
$content_summary = strip_tags($post->post_content);
$content_summary = preg_replace("(\r\n|\r|\n)", "", $content_summary);
$content_summary = mb_substr($content_summary, 0, 60). "..."; ?>
<meta name="description" content="<?php echo $content_summary; ?>" />
<?php } ?>
<?php } else { // その他のページ ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php } ?>

よく見ると3つのルールが書かれていることがわかります。

とりあえず重複を避ける方法

問題の個所は一番下の、

<?php } else { // その他のページ ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php } ?>

この箇所です。

「<?php bloginfo('description'); ?>」は「詳細オプションで設定したブログの説明を記入する」と言う意味です。

「else」はこの場合「投稿ページと固定ページ以外の全てのページ」を示すので、カテゴリーページやタグページにトップページと同じディスクリプションが指定されることになってしまいます。

なので、この「<?php bloginfo('description'); ?>」を削除すると、

<?php } else { // その他のページ ?>
<meta name="description" content="" />
<?php } ?>

meta description 5

これでカテゴリーページやタグページのメタディスクリプションを消すことに成功し、重複問題はとりあえず解決しました。

トップページだけにディスクリプションを設定する方法

ところが、上記の方法で重複問題は解決しますが、トップページに指定したメタディスクリプションまで表示されなくなってしまいます。

そこでいろいろ試した結果、以下のソースで上手くいきました。
赤文字が変更箇所です。

変更したメタディスクリプションのソース

<?php if ( is_single() || is_page() ) { // 記事・固定ページ ?>
<?php if (get_post_meta($post->ID, "metades", true)){ // 個別設定している場合 ?>
<meta name="description" content="<?php $key="metades"; echo get_post_meta($post->ID, $key, true); ?>" />
<?php } else { // 個別設定していない場合
$content_summary = strip_tags($post->post_content);
$content_summary = preg_replace("(\r\n|\r|\n)", "", $content_summary);
$content_summary = mb_substr($content_summary, 0, 60). "..."; ?>
<meta name="description" content="<?php echo $content_summary; ?>" />
<?php } ?>
<?php } elseif ( is_home() && !is_paged() ) { // トップページ ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php } else { // その他のページ ?>
<?php } ?>

「elseif」は「if」以外と言う意味で「 ( is_home() && !is_paged() )」はトップページで、かつ複数に分かれたページでない場合と言う意味です。

「else(その他のページ)」は何も記述しないように空白にしてみました。

詳しくは「条件分岐」と調べてみてください。

※ちなみに「($content_summary, 0, 60)」の「60」の数字を変更することで、自動で指定されるメタディスクリプションの文字数を変更することができます。

まとめ

本当は「カテゴリーページとタグページにディスクリプションを指定した時にだけ、ページ数も表示される」と言った条件にしたかったのですが、急に難易度が上がるので諦めました(笑)。

phpの知識は全くないので、参考程度にご覧いただくか、実行する場合は自己責任でお願いします。

 

SEO対策   0

この記事に関連する記事一覧

コメントフォーム

名前

 

メールアドレス

 

URL

 

 

コメント

トラックバックURL: