plugin Meilleures pratiques pour l'envoi de formulaires

14

J'ai fait beaucoup de recherches et je n'ai pas trouvé ce que je cherchais. J'espère donc pouvoir être dirigé dans la bonne direction.

Je suis en train de développer un plug-in Events qui permettra de réserver un ticket à partir de l'interface. Ce n'est pas différent de toute autre soumission de formulaire, mais ce qui me confond avec, c'est de savoir comment gérer cela à partir d'un plugin écrit via OOP avec une classe.

La plupart des articles que j'ai trouvés recommandent de placer la gestion de $ _POST dans la page de modèle. Idéalement, j'aimerais que cela soit géré par une fonction dans le plugin.

L'autre chose dont je ne suis pas sûr, c'est lorsque vous soumettez le formulaire sur le serveur, comment il est réellement transmis à la fonction sur le serveur. J'espère que le traitement du formulaire sera complètement abstrait de tous les détails du modèle.

// events.php
if ( ! class_exists( 'Events' ) ) {

    Class Events {
        function __construct() {
            add_action( 'plugins_loaded', array( &$this, 'includes' ), 1 );
        }

        function includes() {
            require_once( EVENTS_INCLUDES . 'functions.php' );
        }
    }
}

if ( class_exists( 'Events' ) ) {
    $events_load = New Events();
}


// functions.php
function process_form() {
    ...do form processing here...

    ...insert booking...
}

Je ne suis pas sûr de savoir quoi accrocher, ni où envoyer l'action de formulaire aussi. Merci pour toute l'aide!

-Adam

    
posée alistek 28.06.2011 - 02:29

1 réponse

8

Envoyez l'action de formulaire à votre page d'accueil ou à une URL de page spécifique. Vous ne pouvez pas utiliser la gestion de $ _POST dans le modèle car vous devez rediriger après le traitement et la redirection doit être lancée avant toute sortie HTML.

// you should choose the appropriate tag here
// template_redirect is fired just before any html output
// see - http://codex.wordpress.org/Plugin_API/Action_Reference
add_action('template_redirect', 'check_for_event_submissions');

function check_for_event_submissions(){
  if(isset($_POST['event'])) // && (get_query_var('pagename') === 'events) 
    {
       // process your data here, you'll use wp_insert_post() I assume

       wp_redirect($_POST['redirect_url']); // add a hidden input with get_permalink()
       die();
    } 

}

Vous pouvez également rechercher un nonce pour vous assurer que les données ont été soumises au bon endroit ...

    
réponse donnée onetrickpony 28.06.2011 - 04:29

Lire d'autres questions sur les étiquettes