File: /var/www/html/wp-content/themes/ganryujima_new_1602/_member_scripts.php
<?php
if (is_page('members-password-edit')) {
/**
* パスワード再設定画面
* リセットのためにはメール送信されるトークンが必要
* リセット成功したらトップページへリダイレクト
*/
if(isset($_POST['state']) && $_POST['state'] == 'commit') {
// パスワード再設定
$password = $_POST['password'];
$user_id = $_POST['user_id'];
$user = get_user_by('id', $user_id);
wp_set_password($password, $user_id);
wp_signon(array(
'user_login' => $user->user_login,
'user_password' => $password,
'remember' => true
));
$wpdb->delete($wpdb->prefix . 'reset_password', array('user_id' => $user_id));
wp_safe_redirect(home_url() . '/members-password-edit-complete');
exit;
} else {
// パスワード再設定用トークンが渡されていなければトップページへリダイレクト
if(!isset($_GET['reset_password_token']) || $_GET['reset_password_token'] == '') {
wp_safe_redirect(home_url());
exit;
} else {
$token = $_GET['reset_password_token'];
$row = $wpdb->get_row('SELECT * FROM `' . $wpdb->prefix . 'reset_password` WHERE `token`="' . $token . '"');
if($row == null) {
wp_safe_redirect(home_url());
exit;
}
$user_id = $row->user_id;
}
}
} else if (is_page('members-reset-password')) {
/**
* フォームの送り先はこのページ自体
*/
$condition = '';
$error = '';
if(isset($_POST['state']) && $_POST['state'] == 'commit') {
// 入力されたメールアドレスが存在するかどうか
$email = $_POST['email'];
$user = get_user_by('email', $email);
if($user == false) {
$error = 'メールアドレスは見つかりませんでした。<br>';
} else {
// パスワードリセット用トークン
$token = uniqid(rand());
// パスワード変更リクエストをDBに保存する
$wpdb->insert($wpdb->prefix . 'reset_password', array(
'token' => $token,
'user_id' => $user->ID
));
// メール本文の作成
$message = <<<EOD
{{USER_NAME}} 様<br><br>
いつもご利用いただき誠にありがとうございます。<br>巌流島 運営局です。<br><br>
お客様のパスワード再設定のリクエストを受け付けました。<br><br>
下記のリンクからパスワードを再設定することができます。<br>
<a href="{{RESET_URL}}">パスワードを再設定する</a><br><br>
※パスワードを再設定しない場合はこのメールを破棄して下さい。<br>
上記のリンクをクリックしなければ、元のパスワードがご利用いただけます。<br><br>
尚、ご不明な点や何かお困りのことがございましたら、下記の<お問い合わせ窓口>までお気軽にご相談ください。<br>
今後とも 巌流島 をよろしくお願いいたします。<br><br>
本メールは 巌流島 でユーザー登録された方へ送信されるメールです。<br>
万が一このメールの内容にお心当たりがない場合は、下記の<お問い合わせ窓口>までご連絡ください。<br><br>
**************************************************<br><br>
巌流島 運営局<br><br>
<お問い合わせ窓口><br>
info@ganryujima.jp<br><br>
**************************************************<br>
EOD;
$message = str_replace('{{USER_NAME}}', $user->display_name, $message);
$message = str_replace('{{RESET_URL}}', home_url() . '/members-password-edit?reset_password_token=' . $token, $message);
// メールを送信
wp_mail($email, 'パスワードの再設定について', $message, array('From: 巌流島 <info@ganryujima.jp>'));
$condition = 'done';
}
}
}
?>