J'espère vraiment que j'ai un problème simple devant moi ici, car cela me conduit en quelque sorte au mur.
Petite histoire: soumettre un simple formulaire au début du site entraîne une redirection 302 Found
, supprimant totalement les données $_POST
du processus.
Scénario:
my-edit-template.php
) et appliquez-le à Modifier my-edit-template.php:
<?php
/**
* Template Name: My Edit Template
*/
if ($_POST['action']) {
var_dump($_POST);
}
get_header(); ?>
<form action="" method="post">
<input name="my-ornery-field" value="">
<input type="submit" value="submit">
<input type="hidden" id="action" name="action" value="update-profile">
</form>
<?php get_footer(); ?>
Maintenant, lorsque je soumets le formulaire, je reçois deux demandes sur la même page, la première, la POST
, avec les données de formulaire intactes, et la seconde, une GET
(code d'état 200
), visiblement dépourvue du $_POST
global, ou de tout élément utile à moi.
Je suis sûr que c'est un oubli total, mais je suis perdue; complètement confus.
J'ai essayé:
POST
ing via Javascript/XHR
Aidez-moi?
Je suis désolé si les détails sont clairsemés, je suis un peu en classe en ce moment, mais je ferai un suivi avec toute autre question pertinente, plus tard.
Cette question est assez ancienne mais la seule qui a surgi pour ce genre de problème. Je l’ai eu cette nuit, passé presque 4 heures à me frapper contre le mur - désactivation des plugins, commentaires de code ici et là (et c’est un grand projet multisite avec de nombreuses fonctionnalités personnalisées et formulaires frontend, URL personnalisées, modèles, etc.). C'était une douleur ...
Je vais juste le laisser ici. Cela permettra peut-être à quelqu'un de gagner quelques heures.
" Lors de la création de formulaires frontaux personnalisés, ajoutez toujours votre préfixe d'entrée/sélection/etc avec votre préfixe personnalisé ."
Lorsque vous oubliez cela et commencez à nommer les champs conformément à votre convention de dénomination globale, vous pouvez créer une sélection qui affiche votre taxonomie personnalisée et nommez-la de la même manière qu'une taxonomie personnalisée est nommée elle-même. Lorsque vous cliquez sur "Soumettre", WordPress reçoit vos données $ _POST, les analyse, "comprend" ce nom comme étant sa $ requête_var enregistrée et transforme la demande en ajoutant cette $ requête_var. Bien sûr, il en résulte une redirection, effaçant vos données $ _POST et empêchant le formulaire de faire ce qu’il est supposé faire.
Il n'y a rien de mal avec ce code. Je viens de le faire sur une installation locale et cela a bien fonctionné, exactement comme vous le souhaitez.
Vérifiez les plugins en conflit.