tips

SiteGuard Plugin でログインページ変更をしてもパスワード投稿を可能に

テーマでパスワードのフォームを上書きしなくていいようにしたい。

日本で人気の SiteGuard プラグイン。私個人は普段使わないプラグインなので知らなかったんですが、このプラグインの「ログインページ変更」を利用すると、投稿・固定ページのパスワード設定が動作しなくなります。代名詞的な機能だしさすがに対策があるだろうと思って探してみたところ、パスワードフォームのURLを SiteGuard に合わせようとかしか見つからず・・・。それ、隠しているログインURLを晒すんなら、そもそもログインページ変えんでいいやん。他に解決方法はぱっと見つからなかったので、自作しました。既存の方法より簡単やと思いますし、困っている人のためにここに残しておきます。

パスワードフォームのアクセスのみ、SiteGuard の login_init 関数をスキップする。

wordpress のパスワードフォームには、ログインURL+?action=postpass というクエリが設定されていますので、それだけ例外指定、つまり SiteGuard の関数をスキップしてやれば良いのです。action=postpass はフォームで投げてやらないとワークしませんし、それ以外のクエリがつけると動かないので、セキュリティ上のリスクはないかと思います。他にパスワード投稿周りのプラグインなんか入れてるとコンフリクトするかも分かりませんが。SiteGuard はバージョン1.7.8でテストしています。


// Skip SiteGuard plugin login_init
add_action( 'login_init', function(){
	global $siteguard_rename_login;
	if ( $siteguard_rename_login && ($_SERVER["QUERY_STRING"] ?? '') === 'action=postpass' ){
		remove_filter( 'login_init', array( $siteguard_rename_login, 'handler_login_init' ), 10, 2 );
	}
}, 5); //SiteGuard より priority を高く

コメントを残す

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