webentwicklung-frage-antwort-db.com.de

Durchführen eines POST Aktion auf der Homepage geht zu den Beiträgen

Auf jeder Seite meiner Seite habe ich ein Kontaktformular erhalten, das eine E-Mail an die jeweilige Adresse sendet. Auf dieser Seite habe ich auch die Anzeige der Startseite auf eine statische Seite eingestellt.

Das Kontaktformular wird grundsätzlich an sich selbst gesendet und führt den Benutzer bei Erfolg auf eine neue Seite, ansonsten wird es im Kontaktformular verankert und der Fehler angezeigt. Aber auf der Homepage, sei es irgendeine Art von POST Anfrage, wird die Seite auf die Postseite gesetzt. Scheint mir bizarr, da es sich um eine leere POST -Anforderung handeln kann und der Benutzer trotzdem zur Seite mit den Beiträgen zurückgeleitet wird, die URL sich jedoch nicht ändert. Dies ist nur möglich, wenn Sie einen POST auf der Startseite ausführen. Alle anderen Seiten funktionieren wie erwartet.

Irgendwelche Ideen?

add_action( 'wp_head', 'process_contact_form' );
function process_contact_form() {

    if( isset( $_POST['submit'] ) && $_POST['submit'] ) {
        echo'test';
    }

}

add_shortcode( 'mini-contact', 'get_mini_contact' );
function get_mini_contact( $atts = array() ) {

    extract(shortcode_atts(array(
        'title'   => 'Contact US',
        'button'  => 'Submit',
        'label'   => 'Message us',
        'subject' => 'Message'
    ), $atts));

    $html  = '';

    $html .= '<section id="quick-contact-form" class="home-solution">';
        $html .= '<div class="container">';
            $html .= '<header>';
                $html .= '<h2 class="aligncenter  type--bottom-space">' . $title . '</h2>';
            $html .= '</header>';

            $html .= '
                <form class="contact-form" method="post" action="">
                    <div class="row">
                        <div class="medium-5  columns">
                            <label>Name</label>
                            <input type="text" name="name" class="form-contact__text" />
                        </div>
                        <div class="medium-5  columns">
                            <label>E-mail</label>
                            <input type="text" name="email" class="form-contact__text" />
                        </div>
                    </div>
                    <div class="row">
                        <div class="medium-10  columns">
                            <label>Share your business problem today</label>
                            <textarea name="comment" rows="20" class="form-contact__textarea"></textarea>
                        </div>
                    </div>
                    <div class="row">
                        <div class="medium-10  columns">
                            <input type="submit" name="submit" value="' . $button . '" class="button  expand">
                        </div>
                    </div>
                    <input type="hidden" name="subject" value="' . $subject . '">
                </form>
            ';

        $html .= '</div>';
    $html .= '</section>';

    return $html;

}
1
WolfieZero

Wenn Sie beim Posten eines Formulars 'name' als Eingabenamen verwenden, scheint ein Problem beim Senden zu bestehen.

Versuchen Sie, Folgendes zu ändern:

<input type="text" name="name" class="form-contact__text" />

zu:

<input type="text" name="the_name" class="form-contact__text" />

Vergeben Sie am besten einen eindeutigen Namen für Ihre Senden-Schaltfläche, falls es zu Konflikten mit Plugins/Themes kommt. Überprüfen Sie dann, ob diese in Ihrer process_contact_form()-Funktion gesendet wurden.

4
Steven Jones

Das mag ein bisschen alt sein, aber dieser Beitrag hat mir geholfen, ein ähnliches Problem zu finden. Wenn Sie einen Eingabenamen = "Suche" haben, wird auch eine Postseite geladen, anstatt die statische Startseite neu zu laden.

0
Fengist