新しいユーザーを挿入するためのフォームを投稿し、自分の関数を '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 & 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>
私がこれを機能させる方法は、同じページにフォームを送信し、ユーザーの挿入の結果に基づいて適切なコンテンツを表示することです。
フォームフィールド名の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">