ワードプレスはページが存在しない場合、404ページを自動的に表示します。この404を検出して、任意の出力を行う方法をご紹介します。

template_redirect アクションで404を検出

ワードプレスには開発者用にアクションという、処理のたびに独自の処理を挟み込んで実行できる仕組みがあります。
template_redirect アクション は、ワードプレスがページを何らかの理由で、別のページに内部的に自動移動させるときに呼ばれます。

ゆえに、このアクションを利用して、そのページが404(ページが存在しない)であるかを調べれば、404ページの処理の前に、何らかの処理を行ったり、独自の出力を作ることも可能となります。

add_action( 'template_redirect', 'do_on_404' );

function do_on_404(){
    if( is_404() && ! is_user_logged_in() ){
        echo "404が検出されました";
        wp_die();
    }
}

上記コードでは、template_redirect アクションが発生したときにdo_on_404 関数を実行します。

do_on_404 関数ではis_404() && ! is_user_logged_in() でそのページが404であり、かつユーザーがログインしていない場合にのみ ”404が検出されました” とブラウザーに出力し、wp_die()で処理を終了します。

WordPress ワードプレスのテーマやプラグインのカスタマイズのご相談・ご依頼はWPドクターまでお気軽にお送りください