work.log

元エンジニアの備忘録的ブログ

WordPressでnoindex・nofollowを細かく設定できるプラグイン

投稿:2017-02-24 03:03  更新:

WordPress で SEO 対策を目的とした、noindex・nofollowを細かく設定できるプラグインを作成したので公開します。

このプラグインを使うとこんな事が出来ます。

  1. 投稿、固定ページの noindex・nofollow 設定
  2. カテゴリ、タグ、カスタムタクソノミーを個別に noindex する設定
  3. 投稿、アーカイブページ全体の noindex 化設定

サイトによってはカテゴリやタグも重要なページとなり得ますが、中には不要な物もあると思うので、それを細かく noindex 化して必要な物のみを検索エンジンにインデックスきるようにしようという代物です。

全体を noindex 化できるプラグインは既にありますが、個別に設定できるのが見つけられなかったので作ってみた感じです。

下記でざっくりと使い方を書いておきます。

プラグインの概要

機能

このプラグインは下記の機能を提供します。

  • カテゴリやタグを個別にnoindex化する機能 (カスタムタクソノミー含む)
  • 投稿、固定ページを個別にnoindex・nofollow化する機能
  • 各種アーカイブページ全体をnoindex化する機能 (カスタムタクソノミー含む)

ダウンロード

WordPress の公式プラグインではないのでインストールは下記ファイルをダウンロードして、管理画面から手動インストールする必要があります。またこのプラグインは WordPress 4.4.0 以降で動作します。

ダウンロードリンク
wp-custom-noindex-nofollow.zip

インストールすると「WP Custom Noindex Nofollow」という名前のプラグインが一覧に追加されるのでこれを有効化すると準備が完了です。

プラグインの使い方

全体設定

WordPress 管理画面のメニュー欄に「Noindex Nofollow」という項目が追加されるので、これをクリックするとプラグインの設定ページが開きます。

ここは全体の設定をするページで、「noindex 化するページ」の各種項目にチェックを入れて設定を反映させると、それに該当するアーカイブページ全体が noindex 化されます。

また、個別設定よりも全体設定の方が優先されるので、個別に設定したい場合にはカテゴリやタグのチェックを外してください。

デフォルトでは下記ページを noindex 化します。

  • 日付アーカイブページ
  • 投稿者アーカイブ
  • 2ページ目以降の分割ページ
  • 404ページ

カスタムタクソノミーを使っている場合

カスタムタクソノミーを使っている場合はこのように登録されている一覧が追加されます。

設定の削除メニュー

右の設定削除欄はプラグインの設定をそれぞれ全削除するメニューとなっていて、全て元に戻す場合やプラグインをアンインストールする場合に実行してください。

詳細は後述しますがこのプラグインは WordPress のデータベースにデータを書き込むので、そのクリーンアップ機能です。残っていても問題は無いですがプラグインを使わない場合はこのデータがゴミになるだけなのでその場合は削除実行を推奨します。

カテゴリやタグの個別設定

プラグインを有効化するとカテゴリやタグの編集ページに画像赤枠の項目が追加されるので、noindex 化したい物があればここにチェックを入れて設定します。

解除する場合はチェックを外して更新ボタンを押してください。

投稿、固定ページの個別設定

先程と同様に投稿、固定ページの編集ページにも画像赤枠のメニューが追加されているので、必要に応じて noindex もしくは nofollow を設定します。

なお、現在の所カスタム投稿タイプには未対応です。

設定後の動作確認について

このプラグインは検索インデックスに影響を与えるため、設定後は想定通りにプラグインが動作しているかを良く確認してください。

確認方法は HTML ソースを見て noindex、nofollow の meta タグを目視するか、ブラウザの拡張機能を使って確認するのをオススメします。

Chrome の物が使いやすかったのでリンクを貼っておきます。

作成時に一通り動作確認はしていますが、もし何か不具合があれば教えてください。

プラグインの設定データ保存先

このプラグインの設定は WordPress の下記テーブルにそれぞれ保存されます。

  • wp_options (全体設定)
  • wp_termmeta (タクソノミー個別設定)
  • wp_postmeta (投稿個別設定)

また、テーブルの中にはこのようなデータを登録しています。

wp_options

wp_options には 1 レコードのみ追加します。option_name に ‘wcnn_options’ を使っています。

この設定のみはプラグインアンインストール時に一緒に削除されます。

mysql> select * from wp_options where option_name = 'wcnn_options';
+-----------+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+
| option_id | option_name  | option_value                                                                                                                                                     | autoload |
+-----------+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+
|     22156 | wcnn_options | a:6:{s:14:"noindex_search";b:0;s:16:"noindex_category";b:0;s:16:"noindex_post_tag";b:0;s:12:"noindex_date";b:1;s:13:"noindex_paged";b:1;s:11:"noindex_404";b:1;} | yes      |
+-----------+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+

wp_termmeta

wp_termmeta へは各種タクソノミーの個別設定をする度に 1 レコードずつデータを追加します。

このデータの meta_key は全て ‘wcnn’ で登録されています。

mysql> select * from wp_termmeta where meta_key = 'wcnn';
+---------+---------+----------+------------------------------------+
| meta_id | term_id | meta_key | meta_value                         |
+---------+---------+----------+------------------------------------+
|       1 |     154 | wcnn     | a:1:{s:16:"noindex_archives";b:1;} |
+---------+---------+----------+------------------------------------+

wp_postmeta

wp_postmeta へは投稿、固定ページの個別設定をする度に 1 レコードずつデータを追加します。

このデータの meta_key は全て ‘wcnn’ で登録されています。

mysql> select * from wp_postmeta where meta_key = 'wcnn';
+---------+---------+----------+---------------------------------------------------------+
| meta_id | post_id | meta_key | meta_value                                              |
+---------+---------+----------+---------------------------------------------------------+
|    7461 |    3010 | wcnn     | a:2:{s:12:"noindex_post";b:1;s:13:"nofollow_post";b:1;} |
+---------+---------+----------+---------------------------------------------------------+

以上がこのプラグインの説明書きです。

更新履歴

日付 バージョン 概要
2017/02/24 1.0.0 プラグイン公開
2017/02/24 1.0.1 投稿者アーカイブページにも対応
2018/04/07 1.0.2 投稿・固定ページの全体設定を追加

関連記事

コメント

  1. […] その他のテーマで、個別投稿ページに「noindexを指定するところがない」ようでしたら、このページより「WP Custom Noindex Nofollow」というプラグインをダウンロードして、インストール・有 […]

  2. y.i より:

    「有効」にチェックを入れないと、warningと注意書きがでてきます。
    どのように対処したらよいでしょうか

    • miura より:

      確認ですがこれはプラグイン管理画面の「noindex化するページ」の設定の事を指していますでしょうか?

      もし、全体設定が不要の場合はその右にある「設定削除」->「全体設定」にチェックをいれ削除ボタンを押してください。

      そうすれば、アーカイブページ全体はnoindex化されず、全て個別の設定が有効となります。

  3. さきも より:

    素晴らしいプラグイン
    天才

  4. さきも より:

    使わせていただいた感想です。
    Yoast SEOでも似たようなことができますが、noindexに特化してること、インターフェース等こちらの方が優れてると感じました。
    1つだけ、「noindexするページ」の項目に投稿 (post)がないので追加することはできないでしょうか。
    Yoast SEOでは投稿記事と固定ページを一括でnoindexにすることができますが、こちらのプラグインでは投稿記事と固定ページは個別設定でしかできないようです。

    • miura より:

      さきも さん

      コメントありがとうございました。

      投稿および固定ページについてですが一括 noindex 機能を付けてみました。
      ダウンロードリンクを更新していますので、古いプラグインをアンイストール → 新しいプラグインを再インストールしてみてください。

  5. […] カテゴリやタグを個別にnoindex化できるWordPressプラグイン | work.logworklog.be […]

  6. さきも より:

    クロームのプラグイン「NoFollow」で動作確認できました\( ‘ω’)/
    Yoast SEOにおさらばして末永く使わせていただきますm・・m
    実はあきらめてたのでお返事遅くなってすいません(-_-;)
    ありがとうございました!

  7. さとう より:

    プラグインをインストールして有効化したところ、エラーが出ましたので報告します。
    PHP7.2でwordpressを動かしています。

    ・wordpress上部
    constant is_admin – assumed ‘is_admin’ (this will throw an Error in a future version of PHP) in /(省略)/plugins/wp-custom-noindex-nofollow/includes/functions.php on line 3

    ・メッセージ
    このプラグインを有効化する際に、290文字分の予期しない出力が生成されました。もし “headers already sent” エラーメッセージ、配信フィードの問題などが発生する場合は、プラグインを停止または削除してください。

    • miura より:

      さとうさん

      エラー報告ありがとうございます。プラグイン中で使用している WordPress 関数の is_admin が何か関係しているみたいですね。
      is_admin は非推奨関数だと PHP は言っているように見えるのですが、標準関数じゃないし関係あるのかな…

      私用でバタバタしているので落ち着いたらじっくり見てみようと思います。
      PHP7.0 までは確認を取っていましたが、PHP7.2 はこれから検証してみます。

コメントを残す

よく読まれている記事

  • 本日
  • 週間
  • 月間