web-dev-qa-db-ja.com

送信フォーム「init」で新規ユーザーを挿入します

新しいユーザーを挿入するためのフォームを投稿し、自分の関数を 'init'にフックしています。このコードは私のmu-pluginsフォルダにあります。

ユーザーは問題なく挿入されますが、ページはワード後に読み込まれません。

私のフォームのアクションは空なので、フォームは同じページを投稿する必要があります(私は欲しい)しかし、私は(ヘッダーとフッター付き)空白のページを取得し、タイトルがページが見つからないと言います。

ページの投稿に問題があるようです。

以下は私の機能コードです

/*
*   Register a new reminder_service user
*/
function reminder_register(){
    if(@$_POST['reminder_register']){
        $user["user_login"] = $_POST["email"];
        $user["user_pass"] = $_POST["password"];
        $user["user_email"] = $_POST["email"];
        $user["display_name"] = $_POST["name"];
        $user["user_nicename"] = strtolower(str_replace(" ", "-", $_POST["name"]));
        $user["role"] = 'reminder_service';
        $user["user_registered"] = date('Y-m-d H:i:s');
        $user["show_admin_bar_front"] = false;

        $user_id = wp_insert_user($user);
        if(is_int($user_id)){
            echo 'yes';
        }else{
            foreach($user_id->errors as $error){
                foreach($error as $e)
                    echo $e."<br />";
            }
        }
    }
}
add_action('init', 'reminder_register');

これは私のフォームコードです

<form action="" id="reminder_register_form" method="post">
                        <fieldset class="blue">
                            <span><legend><div class="circle c_1"></div> Your Details</legend></span>
                            <ul class="form floated">
                                <li>
                                    <label for="name">Your Name<span class="required">*</span></label>
                                    <input type="text" name="name" id="name" class="required">
                                </li>
                                <li class="right">
                                    <label for="postcode">Postcode<span class="required">*</span></label>
                                    <input type="text" name="postcode" id="postcode" class="required">
                                </li>
                                <li>
                                    <label for="email">Your Email<span class="required">*</span></label>
                                    <input type="email" name="email" id="email" class="required">
                                </li>
                                <li class="right">
                                    <label for="mobile">Mobile No<span class="required">*</span></label>
                                    <input type="text" name="mobile" id="mobile" class="required">
                                </li>
                                <li>
                                    <label for="password">Password<span class="required">*</span></label>
                                    <input type="password" name="password" id="password" class="required">
                                </li>
                                <li class="right">
                                    <label for="password_confirm">Confirm Password<span class="required">*</span></label>
                                    <input type="password" name="password_confirm" id="password_confirm" class="required">
                                </li>
                                <li>
                                    <label for="terms" class="radio_label">I agree with the Terms of Service, the Privacy Policy and Terms &amp; Conditions of the Good Dealer Scheme Reminder Service</label>
                                    <input type="checkbox" name="terms" id="terms" class="required" value="yes">
                                </li>
                                <li class="right">
                                    <label for="communication" class="radio_label">Please select if you are happy to receive further communication from the Good Dealer Scheme.  </label>
                                    <input type="checkbox" name="communication" id="communication" value="yes">
                                </li>
                            </ul>
                        </fieldset>
                        <div class="submit_button_container">                               
                            <input type="submit" value="Register" name="reminder_register" class="orange">
                            <label><span class="required">*</span> Please complete these fields before clicking the register button</label>
                        </div>
                    </form>

私がこれを機能させる方法は、同じページにフォームを送信し、ユーザーの挿入の結果に基づいて適切なコンテンツを表示することです。

1
user195257

フォームフィールド名の404ページの問題。 WordPressが使用するパブリッククエリ変数のリストがあります。フォームフィールドの1つがこれらの名前の1つを使用する場合、結果は保証されません。

リストはCodexのどこかにありますが、ページテンプレートファイルにリストを印刷することができます。この行を先頭近くに追加します。

wp_die( '<pre>' . var_export( $wp->public_query_vars, true ) . '</pre>' );

$wpはWordPressのグローバル変数です。 wp_die() はあなたのページを壊し、これに似たリストを与えるはずです:

array (
  0 => 'm',
  1 => 'p',
  2 => 'posts',
  3 => 'w',
  4 => 'cat',
  5 => 'withcomments',
  6 => 'withoutcomments',
  7 => 's',
  8 => 'search',
  9 => 'exact',
  10 => 'sentence',
  11 => 'calendar',
  12 => 'page',
  13 => 'paged',
  14 => 'more',
  15 => 'tb',
  16 => 'pb',
  17 => 'author',
  18 => 'order',
  19 => 'orderby',
  20 => 'year',
  21 => 'monthnum',
  22 => 'day',
  23 => 'hour',
  24 => 'minute',
  25 => 'second',
  26 => 'name',
  27 => 'category_name',
  28 => 'tag',
  29 => 'feed',
  30 => 'author_name',
  31 => 'static',
  32 => 'pagename',
  33 => 'page_id',
  34 => 'error',
  35 => 'comments_popup',
  36 => 'attachment',
  37 => 'attachment_id',
  38 => 'subpost',
  39 => 'subpost_id',
  40 => 'preview',
  41 => 'robots',
  42 => 'taxonomy',
  43 => 'term',
  44 => 'cpage',
  45 => 'post_type',
  46 => 'post_format',
)

どのフィールドにもそれらの名前を付けないでください。正しいページに移動するはずです。

たとえば、フィールドの1つはnameという名前です。

<label for="name">Your Name<span class="required">*</span></label>
<input type="text" name="name" id="name" class="required">

項目26は、このnameがWordPressに乗っ取られることを示します。他のものを使用してください。

<label for="user_name">Your Name<span class="required">*</span></label>
<input type="text" name="user_name" id="user_name" class="required">
1