わかったブログさんにSimplicityのSEOのご提案として以下の記事を書いていただきました。
ttp://www.wakatta-blog.com/simplicity-seo-wakatta-blog.html (現在は公開停止)
いろいろ参考になる記事です。
中でも、僕は「rel=”next” rel=”prev”」タグの有効的な使い方については、ほとんど知りませんでした。なので僕も改めて自分で調べてみて、Wordpressでの最適な使い方を考えてみました。
今回は、その「rel=”next” rel=”prev”」タグを付加するWordpressカスタマイズ方法の紹介です。
目次
そもそも「rel=”next” rel=”prev”」タグとは
Googleによると「rel=”next” rel=”prev”」タグは、本来、続き物になっているページの関連性を示すために使うそうです。
WordPressで言えば、「投稿・固定ページの1つのページを<!–nextpage–>タグなどを利用して、複数に分けている分割ページ」などが当てはまると思います。
例えば、Simplicityページでは、以下のページがそれにあたります。
このページの下の方には、以下のようにページリンクが表示されており、「1つの記事を4つに分けた続きものの分割ページ」ということがわかると思います。
「rel=”next” rel=”prev”」タグは、こういった「続き物のコンテンツのURL間の構成」を検索エンジンに知らせる役割を果たします。
このタグを指定することにより、以下のようなSEO的な効果があると考えられます。
- リンクがばらばらの状態ではなく一連のグループとして取り扱われる
- 最も関連性が高いページ(通常は最初のページ)にユーザーを誘導する
これにより、続きものになっているコンテンツの個々のURL間の関係性をGoogleに示すことができます。
続き物コンテンツの例
Google Consoleヘルプとウェブマスター向け公式ブログでは、こういった続き物コンテンツの例として以下のように書かれています。
- ニュースや出版サイト等の 1 つの記事を複数のページに分けているもの
- 小売サイトであれば、商品をカテゴリに分類して複数のページに分けてあるもの
- 同一の製品カテゴリに属する製品を複数ページにまたがって掲載しているもの
- フォーラムの 1 つのスレッドを一連の複数 URL に分割しているもの
こういったページに適切にnext/prevタグを利用すると効果的なようです。
WordPressでのnext/prevタグの利用
WordPressで「rel=”next” rel=”prev”」タグを利用すべき時と言えば、やっぱり、「1つのページを複数に分けた分割ページ(マルチページ)」に適用するのが推奨されるかと思います。
デフォルト設定状態のWordpress動作
ただデフォルトのWordpressの設定では、投稿ページに対して「前の記事」「次の記事」といった感じで、「rel=”next” rel=”prev”」タグが利用されているようです。
WordPressで、小説を書いているのならば、投稿ページそれぞれが続きもののコンテンツとも言えないことはありません。
ただ、通常ブログを書いている人の多くは、「1つの投稿に対して1つの内容」を書いている場合も多く、続き物として書いている人の方が少ないと思います。
なので、デフォルトで投稿ページ1つ1つに「rel=”next” rel=”prev”」タグを割り振る動作は停止させる必要があるのではないかと思います。
トップページやカテゴリページでのページネーション
あと、パズ部さんの記事に以下のようにも書かれています。
続きもののコンテンツ以外にも、例えば、CMSで自動生成されるカテゴリーページも通常、ページネーションが設定されている。その場合、最初のカテゴリーページだけがインデックスされるように rel=”next” や rel=”prev” を設定するとインデックス最適化を行うことができる。
これを参考に、トップの記事一覧や、カテゴリー一覧などでページネーションが使われているページにも「rel=”next” rel=”prev”」タグを利用したいと思います。
All in One SEO Packを見ても、一覧のページネーション分割でも利用されているようなので。
以下記事は、続き物コンテンツへの設定方法から、設定に関する注意点まで、かなりわかりやすく書いてあるので、タグの設定をする際には、一読しておくことをおすすめします。
WordPressカスタマイズのポイント
これまでのことを踏まえ、今から行うWordpressカスタマイズでは、以下の3つのポイントカスタマイズしたいと思います。
- デフォルト機能で投稿ページごとにnext/prevタグを割り振られている場合は停止させる
- 1ページを複数に分けた分割ページにnext/prevタグを追加する
- 「投稿一覧」や「カテゴリ一覧」のようなページネーション分割ページにnext/prevタグを追加する
今回は、functions.phpにコピペするのみで、これらの動作を実現したいと思います。
functions.phpのカスタマイズ
上に書いた3つのカスタマイズを、まとめてfunctions.phpに記述します。(子テーマをカスタマイズする場合は、子テーマのfunctions.phpに記述する)。
functions.phpに記述するコード全部は以下になります。
/////////////////////////////////////// // WordPressデフォルトのnext/prev出力動作を停止 /////////////////////////////////////// remove_action('wp_head', 'adjacent_posts_rel_link_wp_head'); /////////////////////////////////////// //ページネーション(一覧ページ)と分割ページ(マルチページ)タグを出力 /////////////////////////////////////// function rel_next_prev_link_tags() { if(is_single() || is_page()) { //1ページを複数に分けた分割ページ(マルチページ)でのタグ出力 global $wp_query; $multipage = check_multi_page(); if($multipage[0] > 1) { $prev = generate_multipage_url('prev'); $next = generate_multipage_url('next'); if($prev) { echo '<link rel="prev" href="'.$prev.'" />'.PHP_EOL; } if($next) { echo '<link rel="next" href="'.$next.'" />'.PHP_EOL; } } } else{ //トップページやカテゴリページなどのページネーションでのタグ出力 global $paged; if ( get_previous_posts_link() ){ echo '<link rel="prev" href="'.get_pagenum_link( $paged - 1 ).'" />'.PHP_EOL; } if ( get_next_posts_link() ){ echo '<link rel="next" href="'.get_pagenum_link( $paged + 1 ).'" />'.PHP_EOL; } } } //適切なページのヘッダーにnext/prevを表示 add_action( 'wp_head', 'rel_next_prev_link_tags' ); //分割ページ(マルチページ)URLの取得 //参考ページ:http://seophp.net/wordpress-fix-rel-prev-and-rel-next-without-plugin/ function generate_multipage_url($rel='prev') { global $post; $url = ''; $multipage = check_multi_page(); if($multipage[0] > 1) { $numpages = $multipage[0]; $page = $multipage[1] == 0 ? 1 : $multipage[1]; $i = 'prev' == $rel? $page - 1: $page + 1; if($i && $i > 0 && $i <= $numpages) { if(1 == $i) { $url = get_permalink(); } else { if ('' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending'))) { $url = add_query_arg('page', $i, get_permalink()); } else { $url = trailingslashit(get_permalink()).user_trailingslashit($i, 'single_paged'); } } } } return $url; } //分割ページ(マルチページ)かチェックする function check_multi_page() { $num_pages = substr_count( $GLOBALS['post']->post_content, '<!--nextpage-->' ) + 1; $current_page = get_query_var( 'page' ); return array ( $num_pages, $current_page ); }
基本的に、コピペ一発でカスタマイズできます。一応、Twenty Fifteenテーマで動作を確認しました。
参考 WordPressのrel=“prev”とrel=“next”をプラグインなしで最適化する | SEOPHP
参考 Simplicityで独自に変更したSEO施策
動作確認
先に挙げたポイントごとに動作を確認してみたいと思います。
投稿ページ(シングルページ)でのタグ出力
これにより通常の投稿ページでは、以前Wordpressデフォルト機能で以下のようなタグが出力されていたのが出力されなくなりました。
<link rel="prev" href="http://exsample.com/wordpress/post-434/" /> <link rel="next" href="http://exsample.com/wordpress/post-436/" />
続き物ページでのタグ出力
「1ページを複数に分割した続きものの投稿」には、next/prevタグが出力されるようになりました。
以下は、続き物分割ページの2ページ目を表示させた場合のタグ出力例です。
<link rel="prev" href="http://exsample.com/wordpress/series-of-articles/" /> <link rel="next" href="http://exsample.com/wordpress/series-of-articles/3/" />
一覧(ページネーション)でのタグ出力
トップの一覧や、カテゴリの一覧などでもnext/prevタグが出力されるようになりました。
以下は、トップ一覧の3ページ目を表示させたタグ出力例です。
<link rel="prev" href="http://exsample.com/wordpress/page/2/" /> <link rel="next" href="http://exsample.com/wordpress/page/4/" />
まとめ
こんな感じで、Google公式が推奨する続き物ページにnext/prevタグをWordpressに実装してみました。
加えて、All in One SEO Packなども行っている、一覧ページのページネーション分割にもnext/prevタグを追加しました。
これにより、どれほどのSEO的に効果があるのかはGoogleにしかわかりません。とりあえず、しばらく自分のページで試してみたいと思います。
僕もSEOに関しては、特別詳しいわけではなく、とても熟知しているとは言い難いです。ですので間違っている可能性もあるかもしれません。もし、おかしな場合は、コメントなどで指摘していただけると幸いです。
(rel=’prev’ rel=’next’) について色々調べていて行き着きました。
やりたいことはここで書かれていることですごく参考になります。
ただ、WPの仕様変更なのか、previous_post_linkで記事下にページャー追加すると (rel=’prev’ rel=’next’) が付加されてしまいますね。
ヘッダーの記述は、何もしなくても多分出力されなくなっています。
可能ならprevious_post_link(‘%link’)で出力した際の (rel=’prev’ rel=’next’) を削除したいのですが、なかなか見当たらなくご質問させていただきました。
もし分かるようであれば教えて頂けると助かります。
よろしくお願いいたします。