[wp]任意のページで検索避けするギミックの作成

カスタムフィールドの活用。

どういうアレか

送信完了ページとか、隠しページとか、検索結果に出てほしくないページがある。

個別に検索避けできたら便利だよねという話。

やっていく

自動で振り分けられるのは今回の筋とは異なるので割愛、カスタムフィールドで検索避けの<meta>を挿入するギミックを作っていく。

弄るのはカスタムフィールドとheader.php。

カスタムフィールド

カスタムフィールドで真偽のやつを作る。

SCFとかACFとかで簡単に作れていいですね。

カスタムフィールド名は「noindex」として、trueなら検索避けを仕込むこととする。

設定できる対象を全ページにするとか、投稿だけ、カスタム投稿だけ、みたいなのがあると思うのでそこは任意で。

header.php

SCFだとこんな感じ。

<?php if(scf::get('noindex') == true): ?>
    <meta name="robots" content="noindex,nofollow,noarchive" />
<?php endif; ?>

ページの条件を入れたいならこんな感じとか。

<?php
    if(is_page() || is_singular()):
        if(scf::get('noindex') == true):
?>
    <meta name="robots" content="noindex,nofollow,noarchive" />
<?php endif; endif; ?>

全ページを対象にしない場合はこういう感じにしたほうがいいですね。そうでないと存在しないカスタムフィールドを拾いに行く無駄な動作をさせることになる。

テーマを更新して、対象の記事の編集画面でカスタムフィールドを入力して、ページを閲覧してソースを開いて動作確認。プレビューでも発火するので公開してなくても大丈夫。

一応注意

これで操作できるのはWP-admin内で編集できるページのみ。

だから、archive.phpとかcategory.phpとかsearch.phpとかを弄ることはできない。

それと、単純にページに仕込むだけだからsitemapには反映されない。sitemapには入ってるのに見に行ったら弾かれました、ということでサチコが怒る可能性はある。

あと、検索結果の表示・非表示や表示内容の反映は修正は即時じゃない。

検索避けのタグは検索エンジンのロボット次第なんで、公開済みに後追いで付けた場合は再度クロールされて反映されるまで待つ必要がある。

コメント

タイトルとURLをコピーしました