Gérer les formulaires avec WP

Etape 1 – Le formulaire

$urlTo = esc_url( admin_url('admin-post.php') );
<form action="'.$urlTo.'" method="post">
<input type="hidden" name="action" value="mpc_calcul_caution" />
// Complétez votre formulaire ici...

Les 2 premières lignes servent à déclarer la Form, et l’action à exécuter lors du Post de celle-ci.
La troisième ligne est primordiale : elle sert à déclarer un token qui sera passé dans $_POST en tant que ‘hidden value’, et qui sera aussi connu de admin-post.php car son index est ‘action’.
Il pourra alors être traité, voyons comment.

Etape 2 – Déclaration pour admin_post.php

add_action( 'admin_post_nopriv_mpc_calcul_caution', 'traiterCalculCaution' );
add_action( 'admin_post_mpc_calcul_caution', 'traiterCalculCaution' );

Nous déclarons l’appel à la fonction traiterCalculCaution lorsque un Post est fait avec cet input hidden dont nous venons de parler.
Pour que ça fonctionne, le token passé en champ hidden dans la Form doit être accolé à ‘admin_post_nopriv_’ et à ‘admin_post_’.
Pour l’utilité de ces deux actions, se référer à la documentation WP. Dans le cas présent, que l’on ait des privilèges ou pas, on est autorisé à Poster cette Form.
Il est donc possible de régler plus finement cette autorisation.

Etape 3 – La fonction de traitement

function traiterCalculCaution()
{
if ( isset( $_POST['action'] ) && $_POST['action'] == 'mpc_calcul_caution' )
{
// Faire le travail ici ...
}
}

Nous vérifions que $_POST contient bien la valeur attendue dans son champ ‘action’, et nous pouvons alors réaliser les traitements à faire une fois le Post effectué. Évidemment $_POST contient toutes les valeurs attendues, i.e. celles que vous aurez mis en tant que input de la Form à l’étape 1.