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 化したい物があればここにチェックを入れて設定します。

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

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

従来のエディタ (Classic Editor) と WordPress 5.0 から標準になったブロックエディタ (Gutenberg) で、メニュー表示位置が若干違うので両方載せます。

■ Classic Editor

■ Gutenberg (WordPress 5.0~)

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

なお、カスタム投稿タイプも同様に設定ができます。

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

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

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

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

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

プラグインの更新

このプラグインは不定期でアップデートを行っています。上記画像のように更新通知が表示される場合はアップデートしてください。

なお、この通知機能は Ver1.0.4 以降に追加されている機能ですので、それ以前のバージョンを使っている場合は手動でアップデートしてください。

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

このプラグインの設定は 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 投稿・固定ページの全体設定を追加
2018/10/20 1.0.3 不具合を修正
2019/01/17 1.0.4 更新通知機能を追加、不具合を修正
2020/05/02 1.0.5 カスタム投稿タイプに対応

スポンサーリンク

コメント

  1. y.i より:

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

    • miura より:

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

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

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

  2. さきも より:

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

  3. さきも より:

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

    • miura より:

      さきも さん

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

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

  4. さきも より:

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

  5. さとう より:

    プラグインをインストールして有効化したところ、エラーが出ましたので報告します。
    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 はこれから検証してみます。

    • 直し方 より:

      is_adminを’’で囲う

      ’is_admin’

      で直ります

  6. miura より:

    PHP で is_admin のエラーメッセージが出力される不具合を Ver1.0.3 にて修正しました。
    プラグインのダウンロードリンクも更新済みです。

    プラグインファイルの一部で「is_admin()」としないといけない所を「is_admin」と記述ミスしていたのが原因となります。
    その他、軽微な不具合も修正してます。

  7. miura より:

    直し方さん

    コメントありがとうございました。
    いただいた内容で不具合原因が特定できました。感謝いたします。

  8. tanaka より:

    プラグインを使わせていただいています。
    ありがとうございます。
    Warningがでていましたので報告します。

    カテゴリの設定画面になります。
    投稿 → カテゴリー → 作ったカテゴリの編集をクリック
    有効というチェックボックスのところ

    Warning: Illegal string offset ‘noindex_archives’ in ・・・・・/wp-content/plugins/wp-custom-noindex-nofollow/includes/functions.php on line 75

    phpのバージョンは7で、wordpressはバージョン5です。

  9. miura より:

    tanakaさん

    不具合報告ありがとうございました。

    PHP7で配列の扱い方が少し変わった事によるエラーでした。
    こちら Ver1.0.4 で修正しました。

    また、更新通知機能をプラグインに実装しました。
    アップデートがある場合は最新版を直接更新できるようになりました。

    • tanaka より:

      1.0.4のアップデートを待ちます。
      迅速な対応ありがとうございました。

    • miura より:

      追記です。

      1. リンクは差し替え済みですのでダウンロードリンクより最新版をダウンロードしてください

      2. PHP7を利用している場合は早めにアップデートしてください

      3. Ver1.0.4以前のバージョンでは更新通知機能が未搭載なので今回は手動で更新してください

      よろしくお願いします。

  10. sigotnin より:

    エックスサーバーでphpを7.2.6にあげると次のようなエラーが出ます。

    Warning: Use of undefined constant is_admin – assumed ‘is_admin’ (this will throw an Error in a future version of PHP) in /home/*****/*****/public_html/wp-content/plugins/wp-custom-noindex-nofollow/includes/functions.php on line 3

    • miura より:

      sigotninさん

      エラー報告ありがとうございます。

      ※ エラーログのファイルパスは念の為マスクしました。

      そのエラーについては Ver1.0.4 にアップデートする事で解消されると思います。

      ダウンロードリンクより最新版にアップデートしてみてください。
      もしそれでも不具合が解消しない場合はお手数ですが教えてください。

      よろしくお願いします。

  11. kiyo より:

    大変便利で有難く愛用させて頂いております。
    WPテーマによっては固定ページや投稿の他に、【インフォメーション】や【イベント】というページもあるかと思います。
    以前使用していたAll in One SEO Packではそういったページにもnoindexの設定が可能だったのですが、
    こちらでもそのようなページに対応して頂くことは可能でしょうか?

    • miura より:

      kiyoさん

      それは「カスタム投稿タイプ」の事ですね。
      現在このプラグインはカスタム投稿タイプに未対応ですが追加を検討してみます。

      • miura より:

        カスタム投稿タイプに対応したプラグインはほぼ完成したので近日公開予定です。
        もう暫くお待ち下さい。

        • miura より:

          お待たせしました。Ver1.0.5を公開しました。

          Ver1.0.4をお使いの方はWordPressの管理画面より更新可能です。それ以前の場合はダウンロードリンクより最新のzipファイルを取得していただき、手動でアップデートしてください。

          不具合等あればご報告よろしくお願いします。

  12. kiyo より:

    miura 様

    神対応に感謝致します!
    どうも有難うございました!

  13. sake より:

    miura 様

    突然のメッセージ失礼致します。
    先日より、こちらのプラグインをインストールさせて頂きました。

    それで、ちょっとお聞きしたいのですが・・・

    noindex化するページにある「検索結果」ですが、これはページのどの部分を指しているんでしょうか。

    「All In One SEO Pack」で似たような「検索ページに noindex を使用」がありますが
    それと同じように検索ページをnoidexする類の設定でしょうか?

    それとも、Googleの検索結果に表示されなくなるような設定でしょうか?

    かなり初歩的な質問だったら、すみません。

    ただ「検索結果」という表記がちょっと紛らわしいと感じたので、確認したく思いまして・・

    回答いただけると幸いです。

    • miura より:

      sakeさん

      メールも頂きましたが、こちらへ返信します。

      コメントはスパム対策のため承認後、表示されますのでご了承ください。

      > 検索結果

      検索フォームからの検索にヒットした一覧が表示されるページです。

      “検索ページ” は曖昧な表現だと思っていて、これだと検索フォームがあるページも含むのかどうか等わかりにくいです。

      ですので、検索結果が表示されるページという事でこの名称にしています。

      > それとも、Googleの検索結果に表示されなくなるような設定でしょうか?

      そもそもこのプラグインはGoogleの検索結果(検索インデックス)をコントロールするためのプラグインです。

      各ページのnoindex化設定がメイン機能なので、有効化するとGoogleの検索結果に表示されなくなります。取り扱いにご注意ください。

      よろしくお願いします。

  14. jun より:

    投稿ページの右カラムに出てこないのですが何が原因なのでしょうか

    • miura より:

      こちらの環境では問題なく表示されますが、投稿ページ右上にある「表示オプション」で非表示とかになっていないでしょうか?

      • jun より:

        表示されないです。一度プラグインを削除したいのですが「メインのサイトで有効になっているためプラグインを削除できません。」と出ます。

        • miura より:

          管理画面、左側のメニュー一覧にも「Noindex Nofollow」という項目が追加されませんか?

          そして、そのエラーメッセージはWordPressが出しているものなので、そちらを調べて先に解決する必要があると思います。
          メインのサイトとか言っているのでマルチサイトの事かなとか思ったりしますが、こちらからでは状況がよくわかりません。

          後は強引に消す方法として、FTP等でプラグインのディレクトリを丸ごと削除すれば強制停止して消せます。ただしこの方法をやる場合は自己責任でお願いします。

          なお、このプラグインのディレクトリ名は「wp-custom-noindex-nofollow」になります。

コメントを残す

よく読まれている記事

  • 今日
  • 週間
  • 月間