8wired

とりあえずやってみるブログ

WordPress

STINGER8にmeta robotsタグ設定を追加する方法

投稿日:2017年1月24日 更新日:

STINGER8では「meta robots タグ設定」の機能が無くなってるんですね。

「meta robotsタグ設定」は、noindex/nofollowなどの指定ができる「index設定」のことです。投稿の編集ページの右下の方に表示されていました。

STINGER7とかSTINGER Plus+など最近のSTINGERにはずっと付いていた機能ですが、どうやらSTINGER8で削られたようです。

STINGERでは記事毎にmetaタグ設定ができるのですが、自動的に個別ページと固定ページにmetaタグを設定してくれたりもしています。

正直なところ、どれくらい効果のあるものかわかりませんが、検索の質を高めるのに重要な要素の一つということなので機能を追加してみました。

スポンサーリンク

STINGER8にindex設定を追加する方法

index設定の機能を追加する方法は、STINGERの製作者EIJIさんが昔書いた記事が参考になります。

自分のWordPressテーマの投稿に「index、noindex」の設定をサクっと追加する方法 – アフィリエイトのAFFINGER

ウェブサイトにはコードが記載してあるのでこれを参考にすればいいのですが、コピペすると動かなかったり、動作がおかしかったりするので修正が必要です。

自分なりに修正したコードを載せておくので、よかったら参考にしてください。function.phpに追加するだけです。

※ functions.phpに問題があると最悪サイトが見えなくなる可能性があるので、作業前にはバックアップを必ずしましょう。

//////////////////////////////////
// index操作
//////////////////////////////////
 
add_action( 'admin_menu', 'st_meta_robots_add_metaboxr' );
add_action( 'save_post', 'st_meta_robots_save_meta_robots' );
 
function st_meta_robots_add_metaboxr() {
  add_meta_box( 'stmeta', 'index変更', 'st_meta_robots_meta_robots_dropdown_box', 'page', 'side', 'low' );
  add_meta_box( 'stmeta', 'index変更', 'st_meta_robots_meta_robots_dropdown_box', 'post', 'side', 'low' );
}
 
// 挿入ページ
 
function st_meta_robots_meta_robots_dropdown_box() {
	global $post;
	wp_nonce_field( wp_create_nonce( __FILE__ ), 'st_meta_robots' );
	$meta_robots = $post->meta_robots;
 
	?>
	<label for="meta_robots"></label><select id="meta_robots" name="meta_robots">
	<option<?php if ( $meta_robots === "index, follow" ) { echo ' selected="selected"'; } ?>>index, follow</option>
	<option<?php if ( $meta_robots === "index, nofollow" ) { echo ' selected="selected"'; } ?>>index, nofollow</option>
	<option<?php if ( $meta_robots === "noindex, follow" ) { echo ' selected="selected"'; } ?>>noindex, follow</option>
	<option<?php if ( $meta_robots === "noindex, nofollow" ) { echo ' selected="selected"'; } ?>>noindex, nofollow</option>
	</select>
	<?php 
}
 
// データベース登録
 
function st_meta_robots_save_meta_robots( $post_id ) {
	$my_nonce = isset( $_POST['st_meta_robots'] ) ? $_POST['st_meta_robots'] : null;
	if ( !wp_verify_nonce( $my_nonce, wp_create_nonce( __FILE__ ) ) ) {
		return $post_id;
	}
	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
		return $post_id;
	}
	if ( !current_user_can( 'edit_post', $post_id ) ) {
		return $post_id;
	}
 
	$data = $_POST['meta_robots'];
 
	if ( get_post_meta( $post_id, 'meta_robots' ) === "" ) {
		add_post_meta( $post_id, 'meta_robots', $data, true );
	} elseif ( $data !== get_post_meta( $post_id, 'meta_robots', true ) ) {
		update_post_meta( $post_id, 'meta_robots', $data );
	} elseif ( $data === "" ) {
		delete_post_meta( $post_id, 'meta_robots', get_post_meta( $post_id, 'meta_robots', true ) );
	}
}
 
// 表示
 
function st_meta_robots_add_meta_robots_tag() {
	global $post;
	if ( is_single() || is_page() ) {
		$meta_robots = ( empty( $post->meta_robots ) ) ? 'index, follow' : $post->meta_robots;
		echo '<meta name="robots" content="' . $meta_robots . '" />' . "\n";
	} elseif ( is_category() ) {
		echo '<meta name="robots" content="noindex, follow" />' . "\n";
	} else {
 
	}
}
 
add_action( 'wp_head', 'st_meta_robots_add_meta_robots_tag' );

STINGER8では、カテゴリページ以外のアーカイブページには自動でmeta robotsタグが付与されるので、カテゴリページだけに付与するよう変更しています。STINGERのバージョンにより分岐具合が異なるかもしれません。

※ コードを少し修正しました(2017/02/01)

まとめ

メモみたいな記事や短期間だけ載せている記事なんかには、インデックスは不要かもしれないと思い追加してみました。

この機能がSTINGER8から削除されたのは残念ですが、簡単に追加できるものなのでよかった使ってみてください。

スポンサーリンク

-WordPress
-

執筆者:


comment

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

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

関連記事