web-dev-qa-db-fra.com

Supprimer un cookie lors de la soumission d'un formulaire Gravity réussi

J'ai un cookie avec des données que j'utilise pour remplir un formulaire Gravity Forms. Cependant, une fois que le formulaire a été soumis avec succès, j'aimerais supprimer (ou plus précisément, expirer) ce cookie.

Ce que j'ai essayé

Au début, je pensais que le hook gform_after_submission fonctionnerait. J'ai simplement essayé de pointer vers une fonction qui fait ce qui suit:

public static function clearItems() {
    setcookie('items', '', time() - 86400, '/');
}

Le problème est que ce hook est exécuté après les en-têtes et que, par conséquent, la valeur mise à jour et l'expiration ne sont pas définies.

Question

Y a-t-il un moyen d'accomplir cela (peut-être me manque-t-il un crochet qui fonctionnerait mieux)?

Une autre possibilité que j'ai envisagée est de rediriger vers une page et de la gérer mais je préférerais ne pas la gérer de cette façon.

1
Phil Birnie

J'ai exécuté ce code pour essayer de définir un cookie sur le hook gform_after_submission et cela a fonctionné comme prévu.

add_action( 'gform_after_submission', function() {
    setcookie( 'boom', 'boom', time() + 3600, '/' );
} );

Les en-têtes ne doivent pas déjà être envoyés lorsque l'action gform_after_submission est déclenchée. Si vous recevez un avertissement à ce sujet, il se peut que quelque chose d'autre affiche quelque chose sur la page plus tôt dans le processus.

2
David