[wp]ページ単位でnoindex、nofollowとかを仕込む方法

SEO的なね。

All in One SEO Packの場合

固定ページ、投稿、カスタム投稿は簡単。

デフォだと編集画面の下の方に「AIOSEO 設定」がある。
「高度な設定」タブの「ロボット設定」の「デフォルト設定を使用」のチェックを外すとメタ情報を設定できる。

カスタム投稿全部とか、特定タクソノミーへの設定はできない。
無料版だからかもしれない。見落としじゃないと思う。

とりあえず、本当にページ単位で指定したくてタクソノミーとかで一括指定することを考えないならこれでいい。他にも機能あるしね、AIOSEOは便利ですね。

functions.phpでやる

まあこんな感じになるよねと。

//親ページ条件分岐用
function is_parent_slug() {
    global $post;
    if ($post->post_parent) {
        $post_data = get_post($post->post_parent);
        return $post_data->post_name;
    }
}

function meta_headcustomtags() {
    if(is_page('***') || is_parent_slug('***')){
        //固定ページ「***」もしくは固定ページの親が「***」だったら
        $headcustomtag = <<<EOM
        <meta name="robots" content="noindex">
        EOM;
        echo $headcustomtag;
    }elseif(is_single()){
        //投稿ページだったら
        $headcustomtag = <<<EOM
        <meta name="robots" content="noindex">
        EOM;
        echo $headcustomtag;
    }elseif(is_singular('***')){
        //カスタム投稿「***」だったら
        $headcustomtag = <<<EOM
        <meta name="robots" content="noindex">
        EOM;
        echo $headcustomtag;
    }elseif(is_post_type_archive('***')){
        //カスタム投稿「***」のアーカイブだったら
        $headcustomtag = <<<EOM
        <meta name="robots" content="noindex">
        EOM;
        echo $headcustomtag;
    }elseif(is_object_in_term($post->ID,'***','xxx')){
        //カスタムタクソノミー「***」のタームが「xxx」だったら
        $headcustomtag = <<<EOM
        <meta name="robots" content="noindex">
        EOM;
        echo $headcustomtag;
    }
}
add_action( 'wp_head', 'meta_headcustomtags', 99);

重複が多くて汚いので、metaを入れる変数の中身が一緒だったら条件分岐の中身をまとめるとか、条件分岐の中で判定用の変数でtrue/falseを切り替えて最終的に書き出すmetaの中身をアレしたら良いよね。

みたいなね。

コメント

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