2011-07-08 4 views
1

J'écris mon premier plugin Wordpress et j'ai besoin d'ajouter une page qui s'occupe du traitement d'un formulaire. J'ai un shortcode qui ajoute un formulaire à n'importe quelle page. Ce formulaire doit être envoyé à une URL où je peux traiter les données (enregistrer dans la base de données et envoyer un courrier électronique). J'ai d'abord ajouté un fichier process.php dans mon répertoire plugin et posté sur celui-ci, qui fonctionne pour obtenir les données postées, mais je n'ai pas accès aux fonctionnalités wordpress (dont j'ai besoin pour accéder à la table de base de données que j'ai créée) .Ajouter une page dans le plugin

Idéalement je voudrais avoir un URL/plugin-nom/processus que je peux utiliser. Je suppose qu'il doit y avoir un moyen d'avoir cela directement à une fonction dans mon fichier de code plugin principal, mais je n'arrive pas à trouver comment faire cela.

Je suis un Noob complet avec Wordpress (principalement un développeur .NET, mais avec une expérience PHP), donc toute aide serait appréciée.

Répondre

3

Peu de choses ne sont pas claires, mais selon ma compréhension que je peux suggérer ci-dessous solution:

utilisation par exemple

add_action('init', 'ur_form_process_fun'); 

function ur_form_process_fun(){ 
if(isset($_POST['unique_hidden_field'])) { 
    // process form data here 
} 
} 
action pour attraper les données affichées, init "wordpress

Dans le code ci-dessus ur_form_process_fun () déclencheur de fonction à l'étape d'initialisation de wordpress, et l'action de votre formulaire doit être l'URL du site par défaut action="<?php site_url()?>", de sorte que, les données soumises seront publiées sur l'URL de base du site et peuvent être disponibles pour l'action init.

unique_hidden_field peut être un champ d'entrée caché unique de votre formulaire, ceci est juste pour confirmer que les données proviennent de votre formulaire. Espérons que cela puisse résoudre votre problème. :)

0

Vous pouvez utiliser la fonction add_feed pour créer la page de chemin d'action, écrire quelque chose de semblable dans votre functions.php de plug-in ou partout où vous vous définir des actions wordpress:

add_action('init', function() { 
    add_feed('/plugin/form_id_action', function(){ 
     include 'your-action-file.php'); 
    }) 
}); 

Dans votre-action- file.php vous devriez être capable d'utiliser les fonctions wordpress comme d'habitude.

<form action="/pluging/form_id_action" id="form_id_action"> 
    ... 
</form> 

: Réfs https://codex.wordpress.org/Rewrite_API/add_feed https://www.pmg.com/blog/a-mostly-complete-guide-to-the-wordpress-rewrite-api/

Questions connexes