この記事の所要時間: 235

これはこんな状況の方に向けた情報です。

Theme My Loginプラグインを利用していて
admin-sslやWordPress HTTPS等でhttpsを利用し
wp-login.php へのアクセスを httpsにしている場合

この状態で ページにパスワード保護を掛けたけど解除出来なくなった! という方です。

この状況は下記のような原因で起こっています。

パスワード保護解除のパスワード入力フォームがが http:// 〜 /wp-login.php?postpass=〜 または http:// 〜 /login/?postpass=〜
に向けて送信しているため、本来 https で受け付けたい wp-login.php の意思に反しているわけですね。

そこで、解決方法!! ※実地試験済み

要するに!フォームを functions.php に記述し強制的に https へ向けることで解決!

使用テーマの functions.php に下記のコードを追加記述します。
※フォームのアドレスは適宜変更してくださいな。

/** 
 * THEME MY LOGIN & ADMIN-SSL 利用時のパスワード保護解除
 */
function my_password_form() {
  return
    '<p>このページを閲覧するためには、パスワードが必要です。パスワードを入力してください。<p>
    <form class="post_password" action="https://(サイトのURL)/login/?action=postpass" method="post">
    <input name="post_password" type="password" size="24" />
    <input type="submit" name="Submit" value="' . esc_attr__("送信") . '" />
    </form>';
}
add_filter('the_password_form', 'my_password_form');

function my_after_setup_theme(){ 
    setcookie('wp-postpass_' . COOKIEHASH,  $_POST['post_password'],  0, COOKIEPATH);
}
add_action('after_setup_theme', 'my_after_setup_theme' );

これでOK!

やってみてください。
いやー。一時は困った困った・・・。
chrome のデベロッパーツールでなんとか原因探って解決出来ました。

こういったレアな状況の情報がなかったので誰かのために掲載しまーす!

この記事が気に入ったら
いいね ! しよう

Twitter で