web-dev-qa-db-fra.com

Code d'état du fantôme 302 lors de l'envoi d'un message POST demandes sur les pages

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:

  • Créez une page dans l'admin appelé Edit
  • Créez un fichier de modèle personnalisé (c.-à-d. 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é:

  • Tous les plugins désactivés
  • Flushing réécrit aux valeurs par défaut de base
  • POSTing 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.

2
tksb

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.

1
Ihor Vorotnov

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.

2
Otto