it-swarm.com.de

wie ändere ich die URL der Formularaktion für Kontaktformular 7?

Ich verwende Contact Form 7 in einer WordPress-Site mit mehreren Formularen. Ich muss ein Formular an eine andere Formularaktions-URL als die anderen weiterleiten.

Ich habe die Antwort unten für einen vorherigen Thread gefunden, bin mir aber nicht sicher, wie ich das anstellen soll. Kann jemand spezifizieren, welcher genaue Code in "zusätzlichen Einstellungen" enthalten sein muss und wie der Code in functions.php aussehen würde?

Danke für Ihre Hilfe!


antwort von diff. Thread, den ich nicht ganz verstehe ...

* Ja, Sie müssen das Attribut "action" im Formular mithilfe dieses Filter-Hooks wpcf7_form_action_url ändern. (was wäre der Code?) Sie könnten den Hook in die functions.php Ihres Themas einfügen und dann einfach die Formulardaten in Ihrer ASP Seite verarbeiten. (Code?) *


8
user1102824

Da Sie mit PHP Code überhaupt nicht vertraut sind, gebe ich Ihnen einen kurzen Überblick über das Codieren in der Wordpress-API.

Zunächst müssen Sie den Unterschied zwischen Funktionen und Variablen kennen. Eine Variable ist eine einzelne Entität, die einen beliebigen Wert darstellen soll. Der Wert kann alles sein. Eine Nummer, der Name einer Person oder komplexe Daten.

Eine Funktion führt eine Reihe von Aktionen aus, um entweder eine Variable zurückzusenden - oder return - oder eine bestimmte Variable zu ändern.

<?php
$a = 1; //Number
$b = 'b'; //String *note the quotes around it*
$c = my_function(); //Call to a function called my_function
echo $a; //1
echo $b; //b
echo $c; //oh, hello
function my_function()
{
    return 'oh, hello';
}
?>

Wordpress verwendet ein eigenes Action- und Filtersystem, das lose auf dem Event-Driven Programming -Stil basiert.

Dies bedeutet, dass Wordpress auf ein bestimmtes Ereignis "lauscht" und in diesem Fall eine diesem Ereignis zugeordnete Funktion (auch als Rückruf bezeichnet) ausführt. Dies sind die "Aktionen" und "Filter". Was ist der Unterschied?

Aktionen sind Funktionen, die Sachen machen
Filter sind Funktionen, die Dinge zurückgeben

Wie passt das alles zu Ihrem Problem?

Kontaktformular 7 verfügt über einen eigenen Filter, der die URL zurückgibt, an die die Informationen von den Formularen gesendet werden sollen.

Schauen wir uns also die Grundlagen eines Filter Hook an.

add_filter('hook_name', 'your_filter');
  1. add_filter ist die Funktion, die Wordpress mitteilt, dass es auf ein bestimmtes Ereignis warten soll.
  2. 'hook_name' ist das Ereignis, auf das Wordpress wartet.
  3. 'your_filter' ist die Funktion oder der Rückruf, die aufgerufen wird, wenn das Ereignis 'hook_name' ausgelöst wird.

Der Link zum vorherigen Thread besagt, dass der Hook-Name, den Sie verwenden müssen, "wpcf7_form_action_url" ist. Das heißt, Sie müssen nur add_filter aufrufen, den Hook-Namen auf wpcf7_form_action_url setzen und dann your_filter auf den Namen der Funktion setzen, die Sie als Rückruf einrichten.

Sobald dies erledigt ist, müssen Sie lediglich eine Funktion mit einem Namen definieren, der mit dem übereinstimmt, den Sie anstelle von 'your_filter' eingegeben haben, und sicherstellen, dass eine URL zurückgegeben wird, um die Formularaktion zu ändern.

Jetzt kommt das Problem: Dies wird ALLE Ihre Formulare verändern. Aber das Erste ist das Erste: Sehen Sie, ob Sie selbst einen funktionierenden Code erstellen können. Schreiben Sie einfach Ihren Code in functions.php und lassen Sie uns wissen, wie es ausgeht.

UPDATE:

Die Tatsache, dass Sie es so schnell geschafft haben, ist wunderbar und zeigt, wie viel Forschungsaufwand Sie in diese Sache stecken.

Setzen Sie all dies in functions.php ein

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');
function wpcf7_custom_form_action_url()
{
    return 'wheretopost.asp';
}

Wie bereits erwähnt, betrifft dies ALLE Ihre Formulare. Wenn dies nur ein Formular auf einer bestimmten Seite betreffen soll, können Sie folgendermaßen vorgehen:

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');
function wpcf7_custom_form_action_url($url)
{
    global $post;
    $id_to_change = 1;
    if($post->ID === $id_to_change)
        return 'wheretopost.asp';
    else
        return $url;
}

Sie müssen lediglich den Wert von $ id_to_change in eine Zahl ändern, die die ID des Beitrags/der Seite darstellt, auf den/die Sie sich auswirken möchten. Wenn Sie beispielsweise eine Info-Seite haben, deren Aktions-URL Sie ändern möchten, finden Sie die ID-Nummer Ihrer Info-Seite im Admin-Dashboard (rufen Sie einfach den Seiteneditor auf und suchen Sie in Ihrer URL nach der ID Nummer) und ändern Sie die 1 in die ID-Nummer.

Hoffe das hilft dir und viel Glück für dich.

30
maiorano84

Sie können nach einer erfolgreichen Übermittlung Aktionen hinzufügen, wie in der Dokumentation angegeben.

Das Hinzufügen eines Filters funktioniert in dem Sinne, dass es die Aktion im Formular ändert, aber leider auch die Funktionalität des Plugins beeinträchtigt. Wenn Sie den Filter wie andere Antworten hinzufügen, wird der Status des Drehfelds nach dem Absenden des Formulars beibehalten.

Sie können festlegen, dass das Formular beim Senden etwas anderes ausführt, indem Sie erweiterte Einstellungen verwenden, z.

on_submit: "alert('submit');"

weitere Details zu erweiterten Einstellungen hier .

0
pcatre