ワードプレスを使った下記のような会員制のサイトを構築しています。
・購読者は管理者があらかじめ管理画面で登録して購読者にログイン情報とパスワードを知らせている。
・会員制サイトにアクセスすると初めにログイン状態を確認してログインしていないとログイン画面にリダイレクトさせる
・購読者がログインするとワードプレスの管理画面には行かずにログインした状態を持ったままフロントページが表示される。
・購読者は管理画面にはいけない。その代わりにフロントページにユーザー情報を変更するフォームを設置している。
以上の状態で、
下記のように固定ページを作成しました。
<? if(isset($_POST['change_usd']) && wp_verify_nonce($_POST['change_usd'],'change_usd')){ get_header();$user = wp_get_current_user(); $uid = $user -> ID; $user_info = get_userdata($uid); if(isset($_POST['password'])){ if(!($_POST['password'] == "")){ $user_pass = wp_update_user( array( 'ID' => $uid, 'user_pass' => $_POST['password'])); } } if(isset($_POST['email'])){ if(!(($user_info-> user_email) == $_POST['email'])){ $email = wp_update_user( array( 'ID' => $uid, 'user_email' => $_POST['email'])); } } } ?> <form action="" method="post"> <?php wp_nonce_field('change_usd','change_usd');?> <dl> <dt>パスワード</dt> <dd><input type="password" name="password" id="password" value="" placeholder="パスワードを変更する場合は新しいパスワードを入力して下さい。" class="regular-text" /></dd> </dl> <dl class="req"> <dt>メール</dt> <dd> <input type="text" name="email" id="email" value="" placeholder="緊急のお知らせ用メールアドレスをご入力下さい。" class="regular-text" /> </dd> </dl> <div class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="更新する" /></div> </form>
ひとまずパスワードやメールをフォームに入力して更新ボタンを押すと内部的には情報が更新できるのですが、
パスワードを変更するとログイン情報のクッキーがクリアされてヘッダーで「 Cannot modify header information」というエラーがでます。
メールのみ変更したときはエラーは出ません。
またパスワードもメールも変更すると変更されましたとメールが送信されてしまいます。
・パスワードを更新しても内部的にログインした状態を保持したい。
・パスワードやメールを更新しても変更メールが来ないようにしたい。
以上のようにするにはどのようにしたらよいでしょうか?
どうぞよろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/16 09:40
退会済みユーザー
2018/01/16 09:50
退会済みユーザー
2018/01/17 06:34