tips

BASIC認証をWordPressテーマから設定する方法

テーマ側で認証を設定する利点

WordPressの開発中にテーマ側でBASIC認証を設定する機会がありました。通常の開発ではこのような機会はあまりないかもしれませんが、ユーザーやページごとに切り分けたりとフロントでの関数を諸々利用できるのでユースケースがありそうなのと、ftpがなくてもfunctions.phpをテーマファイルエディタで触ることで実現できるというのは大きなメリットです。

コード

functions.phpにコピペしてもらえれば使えます。IDとPASSWORD部分は任意に書き換えてください。 この例では管理画面とログインユーザーは除外していますが、この辺りをシチュエーションによって変更してください。

 

add_action( 'send_headers', function () {
	if ( is_admin() || is_user_logged_in() ) return; // 管理画面とログインユーザーを除く
	$auth_list = array(
		"ID" => "PASSWORD" // 任意に書き換え
	);
	if (isset($_SERVER['PHP_AUTH_USER']) && isset($auth_list[$_SERVER['PHP_AUTH_USER']]) && $auth_list[$_SERVER['PHP_AUTH_USER']] == $_SERVER['PHP_AUTH_PW']){
		return $_SERVER['PHP_AUTH_USER'];
	} else {
		header('WWW-Authenticate: Basic realm="Restricted Area"');
		header('HTTP/1.0 401 Unauthorized');
		header('Content-type: text/html; charset='.mb_internal_encoding());
		die("認証に失敗しました"); // 任意に書き換え
	}
},1 );

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です