So erstellen Sie ein Widget, das über ein Sendeformular im Frontend verfügt

Wie erstelle ich ein Widget, das im Frontend ein Submit-Formular hat? Der Grund dafür ist, dass ich mir die Entwicklung von Plugins beibringe, und ich kämpfe darum, wie man ein Formular am Frontend anzeigt, nachdem ich das Widget in die Sidebar eingefügt habe.

mein Code so weit

function widget ($args,$instance) { extract( $args ); /* Our variables from the widget settings. */ $title = apply_filters('widget_title', $instance['title'] ); $name = $instance['name']; $number = $instance['number']; $message = $instance['message']; /* Before widget (defined by themes). */ echo $before_widget; /* Display the widget title if one was input (before and after defined by themes). */ if ( $title ) echo $before_title . $title . $after_title; ?> 

<label for="get_field_id( 'title' ); ?>"> <input id="get_field_id( 'title' ); ?>" name="get_field_name( 'title' ); ?>" value="" />

<label for="get_field_id( 'name' ); ?>"> <input id="get_field_id( 'name' ); ?>" name="get_field_name( 'name' ); ?>" value="" />

<label for="get_field_id( 'number' ); ?>"> <input id="get_field_id( 'number' ); ?>" name="get_field_name( 'number' ); ?>" value="" />

<label for="get_field_id( 'message' ); ?>"> <textarea id="get_field_id( 'message' ); ?>" name="get_field_name( 'message' ); ?>">

<?php /* After widget (defined by themes). */ echo $after_widget; }

Solutions Collecting From Web of "So erstellen Sie ein Widget, das über ein Sendeformular im Frontend verfügt"

Ich sehe drei Hauptwege zur Bearbeitung von Front-End-Formular-Übermittlungen in einem Widget:

  • Ein reguläres Formular, das über POST übermittelt wird und die gesamte Seite neu lädt. Einfach zu verstehen, einfach zu erstellen, aber keine nette Benutzererfahrung.
  • Laden Sie Ihr Widget in einen iFrame, damit bei einer Formularübergabe nur der iFrame neu geladen wird. Einige externe Anbieter tun dies (z. B. Google Kalender), aber es kann schwieriger sein, das Widget zu stylen.
  • Führen Sie die Formularübermittlung über Ajax aus (mit einem regulären Formular als Fallback?). Dies ist wahrscheinlich die schönste Option, erfordert jedoch etwas Arbeit auf Ihrer Seite. Ich habe einmal versucht, in WordPress einen Überblick über Ajax zu geben, vielleicht ist das ein guter Anfang.

Wenn Sie einen Kommentar zu dieser Antwort hinterlassen, die Sie bevorzugen, könnte ich Ihnen weitere Einzelheiten mitteilen.

Das sollte es machen:

 < ?php /** * @Package: ___ * @Subpackage: ___ * @Author: ___ */ class WidgetExample extends WP_Widget { function init() { parent::WP_Widget( false, $name = 'Our Test Widget' ); } function form( $instance ) { // outputs the options form on admin } function update( $new_instance, $old_instance ) { // processes widget options to be saved return $new_instance; } function widget( $args, $instance ) { // outputs the content of the widget // ADD YOUR FRONT-END FORM HERE } } register_widget( 'WidgetExample' );