社内用だったり、会員制などの用途でWordPressを利用する場合、登録済みのユーザのみにコンテンツを表示させたい。なんてことはないでしょうか?
実際、調べてみても標準の管理画面でそんな機能はないし、プラグインも見あたりません。(調べ方が悪いのかも。。。)
と、いうことで力業ですが、WP2.8系のプログラムソースをちょっといじって実現する方法をまとめます。
利用するのは、WP標準関数群のis_user_logged_in()とauth_redirect()。
簡単に言うと、アクセスされたときにログインしているかどうかを判定して、ログインしていない場合は、管理画面のユーザ認証画面にリダイレクトするというもの。
では、実際にどこを書き換えればよいのか見てみましょう。
WordPressのプログラムを見てみるとルートディレクトリに”wp-blog-header.php“があります。中を覗いてみると次のようになっています。
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . ‘/wp-load.php’ );wp();
require_once( ABSPATH . WPINC . ‘/template-loader.php’ );
}
そこで、ここに赤字で書いてある部分を追記します。
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . ‘/wp-load.php’ );if (is_user_logged_in()){
}
else {
auth_redirect();
};wp();
require_once( ABSPATH . WPINC . ‘/template-loader.php’ );
}
あとは、保存して、ファイルを差し替えるだけ!!
※今回の内容はプログラムを書き換える必要がありますので自己責任でバックアップをしてください。