web-dev-qa-db-fra.com

Traitement des demandes de formulaire à partir d'un fichier plugin

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');
1
Eckstein

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!!!";
    }
}
1
Kudratullah

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.

2
Milo