エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


WordPressで指定カテゴリにnoindexをプラグインなしで設定。特定の記事は外す処理も

   

指定のカテゴリのみに noindexを設定する関数

 

WordPressで特定のカテゴリ、記事に noindexを設定する方法

 
WordPressで特定のカテゴリや、特定の記事に noindexを設定する方法としては、プラグインを利用する方法があります。
 
noindexを設定する WordPressのプラグインとしては、「All in One SEO Pack」が有名ですが、テーマによっては機能が被るために相性が悪いものや、noindexを設定するためだけに「All in One SEO Pack」を導入するのは避けたい、という場合もあるでしょう。
 
最近のテーマでは、テーマ自体に noindexを設定する機能が付いているものが増えてきていますので、これを機にテーマを新しくする、という方法もあるでしょう。
 
 
ですが、プラグインをインストールするにもテーマを刷新するにしても大きな手間や不安要素があるので、サクッと関数を追加するだけで対応したい、という場合もあるでしょう。
 
そんな方に向けて、noindexを設定できる関数を作成しました。
 
 

特定のカテゴリ、記事に noindexを設定する関数

 
下記を functions.phpに編集します。
 
functions.phpのある場所は、下記になります。
/{WordPressのインストール場所}/wp-content/themes/{テーマ名}/
 
functions.phpのある場所についての詳細は、「WordPressの functions.phpがある場所」に解説をしていますので合わせて参考にしてください。
 
functions.phpのファイルの中のどこかに追記すればいいんですが、ファイルの一番最後に追記する方法が無難でしょう。
 

// 特定のカテゴリの詳細ページは noindexを設定する
function add_noindex_tag ( $post_id ) {

  $return_html = "";

  // noindexを設定するカテゴリの slugを指定
  $ng_category_array = array("test","diary",);

  // noindexを設定するカテゴリの中で noindexを設定しない記事の slug
  $ok_post_array = array("111","150",);

  // Post_IDがない場合は、処理を実行しない
  if ( $post_id ) {

    // 特定のカテゴリの詳細ページは noindexを設定する
    if ( is_single() ) {

      // カテゴリを取得
      $get_category_list = array();
      $get_category_list = get_the_category($post_id);

      // カテゴリは配列として返ってくるため foreachで回す
      foreach ( $get_category_list as $get_category_id ) {

        // slugが指定のものと一致する場合は、noindexを指定する
        if ( in_array ( $get_category_id->slug, $ng_category_array ) ) {

          // Postの情報を取得
          $get_get_page = get_page($post_id);

          // slugが指定したものと一致しない場合のみ、noindexを指定指定する
          if ( ! in_array ( $get_get_page->post_name, $ok_post_array ) ) {
            $return_html = '<meta name="robots" content="noindex">';
            continue;
          }
        }
      }
    }
  }

  return $return_html;

}

 
 
処理の内容については、それぞれの行にコメントを書いていますので、それぞれ読んでください。
 
また、設定としては、7行目、10行目を下記の通りに設定変更をしてください。
 
7行目に、noindexを設定したいカテゴリの「slug」を指定します。
10行目には、7行目に設定したカテゴリの中にある記事の中で、noindexを指定したくない記事の「slug」を指定します。
 
上記のサンプルは、10行目が数値になっていますが、「Post ID」ではなく「slug」を編集してください。このブログの slugは数値のため、サンプルも数値になっているだけです。
 
 

noindexを設定する関数を実行する記述

 
先の項目で示した noindexを編集する関数を実行し、実際に noindexのタグを編集する処理は下記になります。
 
編集する場所は「<head>~</head>」の間に編集します。
 

<?php
echo add_noindex_tag($post->ID);
?>

 
一般的に「<head>~</head>」タグは、多くの場合「header.php」ファイルの中にあります。
 
「header.php」ファイルは、先の「functions.php」があるフォルダの中にあります。
具体的には下記になります。
/{WordPressのインストール場所}/wp-content/themes/{テーマ名}/
 
テーマによっては、「<head>~</head>」タグを編集しているファイルが違う場合もあります。
 
 

noindexを設定する意義

 
そもそも何で「noindex」を設定するのでしょうか?
 
noindexの設定は、下記のメタタグを「<head>~</head>」の間に編集することで効果を表すタグです。
 

【すべての検索エンジンのロボットを対象に】
<meta name="robots" content="noindex">

【Googleの検索エンジンのロボットを対象に】
<meta name="googlebot" content="noindex">

 
このタグを設定することで、Googleを始めとした検索エンジンからサイトの情報を取得しに来るロボットに対して、このページの情報はインデックスしないでね、と伝えることができます。
 
前者がすべての検索エンジンのロボットに対して依頼をするのに対して、後者は Googleのロボットのみを対象としています。
(現状の検索エンジンのシェアはほぼ Googleですので、Googleだけ対処できていればいい、という考え方もあり得ます。)
 
 
せっかく書いた記事なのに、検索エンジンにインデックスしないように伝えるということは、その記事は検索エンジンで検索しても検索されなくなる、ということです。
 
それでもなお「noindex」を設定する理由とは何でしょうか?
 
理由は、「サイト全体の記事の質を高めるため」です。
 
 
昔は、ネットサーフィンをする利用者も多かったのですが、最近は、必要な情報を探すためだけに利用している方も多く、検索エンジンもユーザに有用な情報をいかに確実に届けるか、ということに注力しています。
そのため、サイトを通して質の高い記事(アクセスが多い記事)の割合が多いサイトを優先的に検索結果に表示しようとします。
 
それに対応するためには、質の高くない記事(アクセスが少ない記事)は、サイトから外していく必要があるのです。
 
長くブログを続けてきた方の場合に多いと思いますが、昔は流行っていたけど最近は見る人が減っている記事や「ウケる」と思って書いたけどさっぱりのネタ記事など、アクセスがある記事とない記事とが分かれているでしょう。
 
最善の方法は、アクセスが少ない記事はサイトから外してしまう(削除してしまう)方がいいのですが、さすがにそれは忍びないという場合の対応として、検索エンジンにはその記事がないものとして処理してもらう、という方法なのです。
 
そして、その方法の具体的な手段が noindexを設定する、ということなのですが、その設定方法の一つとして関数を作成しました。

 - WordPress

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

BJ Lazy LoadでWordPressを高速化!SEO効果絶大でPVもアップ!

Lazy Load系の処理を使い画像だけでなくiframe等表示スピードに影響があるものを総合的に対策。入れるだけで高速化するので使わない手はない!

WordPressにプラグインを使わず OGP(Open Graph Protocol)の設定方法解説

WordPressに OGP(Open Graph Protocol)をプラグインを使わずに設定する方法の解説。

Advanced Custom Fields(ACF)のアドオン・繰り返しフィールドの使い方解説

Advanced Custom Fieldsのアドオン・繰り返しフィールドについて解説。繰り返しフィールドは投稿者が入力フィールドを追加しながら情報を入力できるフィールドを提供。

Custom Post Type UIでカスタムタクソノミーを設定し編集する方法解説

カスタムタクソノミーを追加、管理するプラグインCustom Post Type UIの使い方の解説。プラグインの解説ではあるものの、カスタムタクソノミーの仕様の解説でもある。

WordPressのパーマリンク設定の考え方

基本設定の一つであるパーマリンクの設定について解説。パーマリンクはURLを決定づける重要な項目ですので、設定の意味を理解して希望するURLになるよう設定しましょう。

BackWPupでバックアップ・データベース保存の自動設定例

BackWPupその8。DBを毎日1回バックアップする具体的事例での説明です。

WordPressの不正ログインを Force email loginで回避

WordPressのセキュリティ強化に Force email loginを使う理由と設定方法の解説をしています。

XAMPPのWordPressの更新でFatal error: Maximum execution time of 30 seconds exceededのエラーが発生して失敗する場合の対処方法

XAMPP環境のWordPressアップデート時に「Maximum execution time of 30 seconds exceeded」のエラーが出る。「max_execution_time」を変更して解決する方法の解説。

WordPress初心者向け フォルダ構成・データベース構成解説

BackWPupその11。バックアップを取るために必要なファイル、データベースの解説をします。

Category OrderでWordPressのカテゴリを並替えよう

Category Orderは基本機能では並び替えができないカテゴリを並び替える機能を提供するプラグインです。ドラッグ&ドロップで並び替えができる簡単インターフェイスです。