[wp]functions.phpでリダイレクトを仕込む

使わないけど使う

利用シーン

カスタム投稿を作る。

カスタム投稿で作成した記事は固定ページで表示する。

カスタム投稿の一覧(archive.php)も個別(single.php)も使わない。

言ってみればカスタム投稿機能をデータベースとして扱いたい。

だからページを生成する必要はないんだけど、WPの仕様上、当然というか、ページが作成されてしまう。だから生成されたURLにアクセスできてしまう。テーマファイルを作ってなかったとしてもindex.phpとかが代入されて、ぶっ壊れたページが表示される。

ただただ「ページを表示したくない」というところがネック。

404を出す必要もないわけで、リダイレクトを仕込んでトップページに飛ばしてしまえという話。

方向性はそれはいいんだけど、じゃあどうやって組むか。

wpのリダイレクトはプラグインで仕込むこともできるんだけど、個別に仕込むならともかく仕様として特定のディレクトリ以下を全部リダイレクトしちゃうなら、テーマ側で設定した方がスマートだよねっていう感じ。

プラグインは便利だけどあんまり入れすぎると重くなったり、バージョンアップがだるかったり、なくなってても困るし、使わなくて済むなら使わないに越したこともない。

functions.phpでリダイレクトを仕込めるからそれをやる。

やる

こう。

function redirect_me() {
    if( is_singular('example') ||is_post_type_archive('example')){
        wp_redirect( 'https://hogehoge.com/', 301 );
        exit;
    }
}
add_action( 'template_redirect', 'redirect_me' );

この組み方だとコードを読めば何をしてるかが分かるから応用しやすい。便利ですね。

.htaccessだと馴染みのない呪文だから難しい。

参考

ワードプレスの任意のページを301リダイレクトさせるPHPコード – WPドクターblog
ワードプレスの任意のページを301リダイレクトさせるPHPコード ワードプレスの任意のページを301リダイレクトさせるPHPコードをご紹介します。 ※この方法はワードプレスの組み込みのリダイレクト関数を使う方法で、HTACCESSは利用しな...

コメント

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