Holen Sie sich Contact Form 7 Formular-ID In PHP
Bin ich mit contact form 7 laden zwei verschiedene Formulare in einer Seite und dann, zusätzlich zu dem senden der E-Mail dynamisch hinzufügen, die Informationen an eine Datenbank. Leider, weil das plugin, ich kann es nicht einfach nur schaffen, alle Eingänge mit unterschiedlichen Namen zu vermeiden, benötigen Sie einen filter. Also, im wesentlichen würde ich gerne ziehen Sie die Formular-ID in die Handlung Haken und dynamisch erstellen der Variablen "$data", basierend auf dem Formular wird eingereicht, aber ich bin mir nicht sicher, wie man den cf7-form-ID. Weiß jemand, wie dies zu erreichen, oder vielleicht ein gangbarer Weg, es zu tun?
Form Kurzwahlnummern
[contact-form-7 id="221" title="Reg 1"] [contact-form-7 id="112" title="Reg 2"]
PHP Action-Hook in functions.php
function save_form( $wpcf7 ) {
global $wpdb;
$form_to_DB = WPCF7_Submission::get_instance();
if($form_to_DB) {
$formData = $form_to_DB->get_posted_data();
}
if("Request a Free Demo" != $formData['demo_request'][0]){
$freeDemo = "yes";}else { $freeDemo = "nope";}
if(THE FORM ID = 221) {
$data = array(
some values from the 112 form
$wpdb->insert( $wpdb->prefix . 'registrations', $data );
);
}elseif(THE FORM ID = 112) {
$data = array(
some other values from the 112 form
$wpdb->insert( $wpdb->prefix . 'registrations_2', $data );
);
}
}
remove_all_filters('wpcf7_before_send_mail');
add_action('wpcf7_before_send_mail', 'save_form' );
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Neige dazu, verwenden Sie die "wpcf7_posted_data" action hook (aber das könnte sich geändert haben da die Frage ist ein bisschen alt jetzt). Sie nicht brauchen, um alle Filter entfernen.
Zum Beispiel:
$wpcf7->id
ist nicht mehr zugänglich ist, verwenden Sie$wpcf7->id()
statt.verwenden Sie einfach diese:
Diese können Sie verwenden: $form_id = $_POST['_wpcf7'];
GELÖST:
Gewickelt ich nur mit einem logischen operator prüfen, ob ein Formular bestimmtes Feld leer oder nicht. Wenn das Feld "form_2_name" leer war, wenn ein Formular abgesendet wurde, dann wissen wir, dass form 1 eingereicht wird. Einfache if-Anweisung mit dieser Logik hat den trick!