Dans un plugin, j'ai un formulaire de paiement qui doit être soumis (via l'action = attribut) à un fichier .php, également situé dans mon plugin directement. Après quelques recherches, il semble que la "méthode wordpress" pour appeler des fichiers de plug-ins individuels consiste à utiliser des requêtes personnalisées sur index.php. Je l'ai fait avec le code ci-dessous, et cela fonctionne, mais le code en question doit simplement traiter le formulaire, puis rediriger l'utilisateur vers une page de confirmation, je n'ai pas besoin d'afficher quoi que ce soit. À l'heure actuelle, il semble que le modèle index.php soit en train d'être chargé, ce qui semble être un gaspillage.
Est-ce que j'y vais correctement? Si non, comment devrais-je faire cela à la place?
//Register our custom request hook
function tps_space_rental_query_vars($vars) {
$vars[] = 'tps-rent-space';
return $vars;
}
add_filter('query_vars', 'tps_space_rental_query_vars');
//This will allow us to process our payment form the wordpress way
function tps_payment_parse_request($wp) {
if (array_key_exists('tps-rent-space', $wp->query_vars)
&& $wp->query_vars['tps-rent-space'] == 'chargeform') {
// process the request, just testing for now
echo 'This request happened!';
}
}
add_action('parse_request', 'tps_payment_parse_request');
le moyen le plus simple est d'utiliser le crochet d'action init
add_action("init", "your_form_handler_action");
function your_form_handler_action(){
if( isset( $_REQUEST["action"] ) && $_REQUEST["action"] == "your_action_name" ) {
echo "Response!!!";
}
}
WordPress a un point de terminaison de requête POST/GET général, en utilisant admin_post_ (action) pour associer votre code à une action, similaire à la façon dont WordPress traite les demandes AJAX. Utilisez admin_url( 'admin-post.php' )
pour générer l'URL.