WordPressへプラグインを使わずnoindex、nofollowを実装する方法function使用(黙示録)

WordPress

運営しているほかのサイトで今までnoindex、nofollowを付加するのにAll in One SEO Packを使用していたのですが

All in One SEO Packを使用しなくなって一番困ったのが内容の薄いページへGoogleがindexしないよう指定するnoindex

そこで探し回った結果カスタムフィールドとfunctionに記述する2つの方法が見つかり後々の設定の利便性からfunctionに記述する方法を黙示録として置いておきます

スポンサーリンク

私の環境ではしっかり動きタグもしっかり付与していることを確認していますがすべて同じとは限らないのでやってみる方は十分テストを行った上で実装してください。

実装するとメニューにプルダウンが追加されて選択できるようになります

方法

参考にさせていただいたのが有名なテーマであるAffingerのページ

「自分のWordPressテーマの投稿に「index、noindex」の設定をサクっと追加する方法(ページが削除されていました)」

コピペでOKかと思いきやサイトが真っ白になってしまったのでいろいろやったらいつの間にかできてました・・・

スペースなどをとりあえず消しまくったのが効いたのかもしれませんが何が原因だったのかはわかりません。

エラーチェックなどでも問題はなかったので何が原因かは不明です(^^;

コード

今動いているコードです自己責任で使用してください

add_action( ‘admin_menu’, ‘st_stmeta_robots_add_metaboxr’ );
add_action( ‘save_post’, ‘st_stmeta_robots_save_stmeta_robots’ );
function st_stmeta_robots_add_metaboxr() {
add_meta_box( ‘stmeta’, ‘index変更’, ‘st_stmeta_robots_stmeta_robots_dropdown_box’, ‘page’, ‘side’, ‘low’ );
add_meta_box( ‘stmeta’, ‘index変更’, ‘st_stmeta_robots_stmeta_robots_dropdown_box’, ‘post’, ‘side’, ‘low’ );
}function st_stmeta_robots_stmeta_robots_dropdown_box() {
global $post;
wp_nonce_field( wp_create_nonce( __FILE__ ), ‘st_stmeta_robots’ );
$stmeta_robots = $post->stmeta_robots;
?>
<label for=”stmeta_robots”></label>
<select name=”stmeta_robots” id=”stmeta_robots”>
<option <?php if ( $stmeta_robots === “index, follow” ) {
echo ‘selected=”selected”‘;
} ?>>index, follow
</option>
<option <?php if ( $stmeta_robots === “index, nofollow” ) {
echo ‘selected=”selected”‘;
} ?>>index, nofollow
</option>
<option <?php if ( $stmeta_robots === “noindex, follow” ) {
echo ‘selected=”selected”‘;
} ?>>noindex, follow
</option>
<option <?php if ( $stmeta_robots === “noindex, nofollow” ) {
echo ‘selected=”selected”‘;
} ?>>noindex, nofollow
</option>
</select>
<?php
}

 

function st_stmeta_robots_save_stmeta_robots( $post_id ) {
$my_nonce = isset( $_POST[‘st_stmeta_robots’] ) ? $_POST[‘st_stmeta_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[‘stmeta_robots’];
if ( get_post_meta( $post_id, ‘stmeta_robots’ ) === “” ) {
add_post_meta( $post_id, ‘stmeta_robots’, $data, true );
} elseif ( $data !== get_post_meta( $post_id, ‘stmeta_robots’, true ) ) {
update_post_meta( $post_id, ‘stmeta_robots’, $data );
} elseif ( $data === “” ) {
delete_post_meta( $post_id, ‘stmeta_robots’, get_post_meta( $post_id, ‘stmeta_robots’, true ) );
}
}

function st_stmeta_robots_add_stmeta_robots_tag() {
global $post;
if ( is_single() || is_page() ) {
if ( ( $GLOBALS[“stdata9″] ) !== ” && ( $GLOBALS[“stdata9”] ) != $post->ID ) {
$stmeta_robots = ( empty( $post->stmeta_robots ) ) ? ‘index, follow’ : $post->stmeta_robots;
echo ‘<meta name=”robots” content=”‘ . $stmeta_robots . ‘” />’ . “\n”;
}
} elseif ( !is_category() && is_archive() ) {
echo ‘<meta name=”robots” content=”noindex, follow” />’ . “\n”;
} else {
}
}
add_action( ‘wp_head’, ‘st_stmeta_robots_add_stmeta_robots_tag’ );

やってみて

内容が薄いページやお知らせなどで意味があるけどGoogleにインデックスしてほしくないページへ簡単付与できるので便利になります!

注意点:Google XML SITEMAPプラグインを使用している場合プラグイン側にも指定を行わない場合indexガバレッジのエラーが出ます(サーチコンソル)

コメント