Top

メモ書き

どうも。
これもたまにあるやつです。

特定の人にだけ見せたいページがある場合は有効かと。
ユーザーを作ってログイン機能を追加するのも一つの手段ではありますが、ユーザーを作るとダッシュボード内に入られる可能性も出てくるので、(権限によって制限する方法もあります)Basic認証が有効な時もあります。
単純にログインページとか作らなくていいというのも簡単でいいですよね。
ただログインページとは違って、閲覧者によって内容を変えたりすることはできないのでご注意を。

functions.phpに記述して特定のページにだけBasic認証をかける方法

さっそく結論となるコードを。

add_action('template_redirect', 'custom_basic_auth');
function custom_basic_auth() {
    if ( is_post_type_archive('your_post_type') || is_singular('your_post_type') ) {
        if (!isset($_SERVER['PHP_AUTH_USER'])) {
            header('WWW-Authenticate: Basic realm="My Private Page"');
            header('HTTP/1.0 401 Unauthorized');
            echo 'このページを表示するには認証が必要です';
            exit;
        } else {
            if ($_SERVER['PHP_AUTH_USER'] != 'ユーザー名' || $_SERVER['PHP_AUTH_PW'] != 'パスワード') {
                header('HTTP/1.0 401 Unauthorized');
                echo '認証に失敗しました';
                exit;
            }
        }
    }
}

3行目の if ( is_post_type_archive(‘your_post_type’) || is_singular(‘your_post_type’) ) この記述でBasic認証をかけたいページを設定。
「ユーザー名」「パスワード」の部分を変更すれば、あとはそのままで良いかと。

functions.phpの変更後はパーマリンクの更新もお忘れなく。
ではまた。