it-swarm.com.de

Best Practice für das Einreichen von Plugins

Ich habe viel recherchiert und nicht genau das gefunden, wonach ich suche, und hoffe, dass ich in die richtige Richtung gelenkt werden kann.

Ich entwickle ein Event-Plugin, mit dem ich ein Ticket über das Frontend buchen kann. Dies ist nicht anders als jede andere Formularübermittlung, aber ich bin verwirrt darüber, wie das mit einem Plugin gehandhabt wird, das über OOP mit einer Klasse geschrieben wurde.

Die meisten Artikel, die ich gefunden habe, sagen, dass die $ _POST-Behandlung in die Vorlagenseite eingefügt werden soll. Idealerweise möchte ich dies durch eine Funktion innerhalb des Plugins erledigen lassen.

Die andere Sache, bei der ich mir nicht sicher bin, ist, wann Sie das Formular im Frontend einreichen, wie das tatsächlich an die Funktion im Backend übergeben wird. Ich hoffe, die Formularverarbeitung vollständig von allen Vorlagendetails zu abstrahieren.

// 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...
}

Ich bin nicht sicher, woran ich mich anschließen soll, oder wohin ich die Formularaktion senden soll. Danke für all die Hilfe!

-Adam

15
alistek

Senden Sie die Formularaktion entweder an Ihre Homepage oder an eine bestimmte Seiten-URL. Die Vorlage kann nicht mit $ _POST bearbeitet werden, da Sie sie nach dem Verarbeiten umleiten müssen und die Umleitung vor jeder HTML-Ausgabe ausgelöst werden muss.

// 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();
    } 

}

Sie können auch nach einem nonce suchen, um sicherzustellen, dass die Daten vom richtigen Ort übermittelt wurden ...

8
onetrickpony