Je poste un formulaire pour insérer un nouvel utilisateur et accroche ma fonction à 'init'. Ce code est dans mon dossier mu-plugins.
L'utilisateur est bien inséré, mais la page n'est pas chargée après.
Mon action de formulaire est vide, le formulaire devrait donc afficher la même page (ce que je veux). Cependant, je viens d'obtenir une page vierge (avec en-tête et pied de page) et le titre indique que la page ne peut pas être trouvée.
Il semble y avoir un problème avec le post de la page?
Ci-dessous mon code de fonction
/*
* 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');
Ceci est mon code de formulaire
<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>
La façon dont je veux que cela fonctionne est de soumettre le formulaire à la même page et d'afficher le contenu approprié en fonction du résultat de l'insertion de l'utilisateur.
Le problème 404 page dans les noms de champs de formulaire. Il existe une liste de variables de requête publiques utilisées par WordPress. Si l'un de vos champs de formulaire utilise l'un de ces noms, le résultat n'est pas garanti.
La liste est disponible quelque part dans le Codex, mais vous pouvez imprimer la liste dans votre fichier de modèle de page. Ajoutez cette ligne près du sommet:
wp_die( '<pre>' . var_export( $wp->public_query_vars, true ) . '</pre>' );
$wp
est une variable globale WordPress. wp_die () devrait casser votre page et vous donner une liste similaire à celle-ci:
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',
)
Ne donnez à ces champs aucun nom et vous devriez vous rendre à la bonne page.
Par exemple, l'un de vos champs s'appelle name
.
<label for="name">Your Name<span class="required">*</span></label>
<input type="text" name="name" id="name" class="required">
L'élément 26
indique que cette name
sera détournée par WordPress. Utilisez autre chose:
<label for="user_name">Your Name<span class="required">*</span></label>
<input type="text" name="user_name" id="user_name" class="required">