wordpressでログインユーザーのみ閲覧させるfunction.phpの書き方

新規サイトのテスト、テーマの検証などのために、非公開でwordpressサイトを運用したいことが多々あります。

  1. ⇒新規サイトのテスト
  2. ⇒新テーマのテスト
  3. ⇒仲間とだけ楽しみたいサイト
  4. ⇒会員制コミュニティーの運用

いままでは、設定>プライバシーで検索エンジンのインデックスを許可しないを選択していましたが、それではアクセスされたときには人の目に触れるんですよね。企業サイトの構築中などは、着替え中の試着室みたいなもので、開けられたらとっても困ります。

そこでためになったのが、TOKYO2012WordCampのたにぐちまことさんのセッション「テストサーバーで WordPressサイトを構築しよう!」です。
セッションの資料は公開されています

たにぐちさんのお話しでは、Basic認証、プラグインMaintenance Modeとfunction.phpを追加することで、他の人への非公開を徹底し、より確かなテストサーバーの運用が可能になるということでした。

そこで3つめのfunction.phpで非公開にする方法を導入しました。

このやり方はログインユーザーだけにサイトが見られるようにする方法で、導入も運用も簡単なのが嬉しいです。


/* ログインユーザーのみ閲覧させるための記述 */
function require_login() {
    if ( ! is_user_logged_in() && ! preg_match( '/^(wp-login.php|async-upload.php)/', basename( $_SERVER['REQUEST_URI'] ) ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX )  && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
        auth_redirect();
    }
}
add_action( 'init', 'require_login' );

▼参考にさせていただいたサイト
WordPressの表示をログインユーザーに限定する | Simple Colors