【WordPress】Theme My Loginのパスワード再発行がうまくいかないとき

一時期不正アクセスとスパムコメントが減っていたのに
また増えた・・
なんか対策しないと~~・・

————————————————————–
WordPressの会員管理プラグインのTheme My Loginで
パスワード再発行がうまくいかないという不具合に対応しました。

●WPとプラグインのバージョン
TML 6.3.12
WP 4.3.3

●不具合状況
1.パスワード再発行画面で、メールアドレスを入れてボタンクリック
http://example.com/lostpassword/

2.パスワードリセットのメールが届く
メール内のURL http://example.com/resetpass/?key=●●●●●&login=▼▼▼▼▼

↑↑ここまではOK

3.パスワードリセットのメール内のURLをクリックすると、リダイレクトして下記エラー
http://example.com/lostpassword/?error=expiredkey
Sorry, that key has expired. Please try again.

ログインしてる場合は、プロフ編集ページへ遷移
http://example.com/user_profile/

●修正箇所(2か所)
参考サイト https://wordpress.org/support/topic/reset-password-email-with-expired-key

(1)/theme-my-login/includes/class-theme-my-login.phpを修正
1104行目
from:
$wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user_login ) );

to:
$wpdb->update( $wpdb->users, array( 'user_activation_key' => time().":".$hashed ), array( 'user_login' => $user_login ) );

★(1)を直した段階で、
keyの値はOK(expireされない)、resetページが開くようになったが、
「新しいパスワードの確認」に入力すると、パスワード欄が消えてしまって
リセットできない

(2)/theme-my-login/templates/resetpass-form.phpの修正
『パスワード確認用』のinputタグを下記のように修正する
from:
<input autocomplete="off" name="pass2" id="pass2the_instance(); ?>" class="input" size="20" value="" type="password" autocomplete="off" />

to:
<input autocomplete="off" name="pass2" class="input" size="20" value="" type="password" autocomplete="off" />

Popular Posts

Sorry. No data so far.