Angebotsanfrage mit Yith
Das „Yith request a quote“ WordPress Plugin ist ein beliebtes Plugin für die Nutzung eines WooCommerce Shops, um den Besucher eine Kaufanfrage erstellen zu lassen. Das bedeutet, dass der Besucher seine gewünschten Artikel in eine „Wunschliste“ hinzufügen kann und danach mit einem kleinen Formular eine Angebotsanfrage abschicken kann. Vor allem bei Eventagenturen ist dieses Plugin sehr beliebt. In diesem Artikel möchte ich euch zeigen, wie man bereits in der kostenfreien Version des Plugins, das Anfrageformular erweitern kann. Dieses Tutorial richtet sich aber eher an die Entwickler unter euch. Ansonsten bietet Yith auch eine Pro Version, die diese und weitere Funktionen erlaubt, für einen fairen Preis an.
Anpassen des Formulars
Yith wirbt in Ihrer Dokumentation mit der Anpassung der Templates. Wir kopieren uns die „request-quote-form.php“ aus dem Template Ordner und fügen die Datei in unserem Theme Ordner ein. Diese Template Datei, wird dann aufgerufen und kann von uns bearbeitet werden. In dem Codeauschnitt sieht man einen Teil des Formulars. Ich habe nach dem E-Mail Feld ein weiteres Feld für die Telefonnummer eingefügt. Makiert ist das mit dem Kommentar „<!–Neues Feld: Telefon–>“. Ich habe dafür lediglich das E-Mail Feld kopiert und die Attribute und die Bezeichnung angepasst.
<form id="yith-ywraq-mail-form" name="yith-ywraq-mail-form" action="<?php echo esc_url( YITH_Request_Quote()->get_raq_page_url() ); ?>" method="post">
<p class="form-row form-row-wide validate-required " id="rqa_name_row">
<label for="rqa-name" class=""><?php esc_html_e( 'Name', 'yith-woocommerce-request-a-quote' ); ?>
<abbr class="required" title="required">*</abbr></label>
<input type="text" class="input-text " name="rqa_name" id="rqa-name" placeholder="" value="<?php echo esc_attr( $user_name ); ?>" required>
</p>
<p class="form-row form-row-wide validate-required" id="rqa_email_row">
<label for="rqa-email" class=""><?php esc_html_e( 'Email', 'yith-woocommerce-request-a-quote' ); ?>
<abbr class="required" title="required">*</abbr></label>
<input type="email" class="input-text " name="rqa_email" id="rqa-email" placeholder="" value="<?php echo esc_attr( $user_mail ); ?>" required>
</p>
<!-- Neues Feld: Telefon -->
<p class="form-row form-row-wide validate-required" id="rqa_tel_row">
<label for="rqa-tel" class=""><?php esc_html_e( 'Telefonnummer', 'yith-woocommerce-request-a-quote' ); ?></label>
<input type="tel" class="input-text " name="rqa_tel" id="rqa-tel" placeholder="" value="">
</p>
......
Übergabe Daten aus dem Formular
Ich nutze zum einfügen von PHP Code das Plugin „Code Snipped“. Dieses erlaubt das bearbeiten direkt im Backend und man kann bei Fehlern einzelne Scripts deaktivieren. Alternativ kann man das auch manuell in die functions.php des Themes einfügen. Wir fangen mit dem Code den Hook ab, um in diesem Fall unsere eigene Funktion auszuführen. Im ersten Schritt innerhalb der Funktion fange ich noch zusätzlich das vorher angelegte Telefonfeld ab und speichere dann anschließend den Wert in das $args Array mit ab. Danach prüfe ich nochmal ob unsere Daten korrekt geladen wurden und führe dann die Methode „send_raq_mail“ aus und übergebe noch alle gesammelten Daten (unser $args array). Die remove_action verhindert dass absenden einer 2. Mail welche eigentlich die Ursprüngliche sein sollte.
add_action( 'ywraq_process', 'add_custom_fields_to_request_quote', 10, 1 );
function add_custom_fields_to_request_quote( $args ) {
// Zusätzliche Felder aus POST-Daten abrufen
$rqa_tel = isset( $_POST['rqa_tel'] ) ? sanitize_text_field( wp_unslash( $_POST['rqa_tel'] ) ) : '';
// Zusätzliche Felder zur $args Variable hinzufügen, ohne raq_content zu ändern
$args['user_tel'] = $rqa_tel;
// Überprüfen, ob `raq_content` korrekt geladen wird
$raq_content = YITH_Request_Quote()->get_raq_for_session();
if ( is_array( $raq_content ) ) {
$args['raq_content'] = $raq_content;
} else {
$args['raq_content'] = array();
}
// E-Mail senden und danach die Hook-Registrierung für `send_raq_mail` entfernen
do_action( 'send_raq_mail', $args );
remove_action( 'send_raq_mail', array( 'WC_Emails', 'send_transactional_email' ), 10 );
}
Anpassen der versendeten E-Mail
Damit wir die übergebenden Daten auch in der E-Mail bekommen, müssen wir noch unsere E-Mail Template anpassen. Dieses liegt auch im Template Ordner unter einem Unterordner „emails“. Der komplette Ordner kann auch hier in das Theme Verzeichnis kopiert werden. In dem Ordner „emails“ finden wir unser template „request-quote.php“. Hier bin ich wie im Formular vorgegangen und habe mir den Block (E-Mail) darüber dupliziert und die Attribute angepasst. Wichtig ist vor allem unser $raq_data[‚user_tel‘] welches wir genauso einen Schritt davor übergeben haben.
<p><strong><?php esc_html_e( 'Name:', 'yith-woocommerce-request-a-quote' ); ?></strong> <?php echo esc_html( $raq_data['user_name'] ); ?></p>
<p><strong><?php esc_html_e( 'Email:', 'yith-woocommerce-request-a-quote' ); ?></strong> <a href="mailto:<?php echo esc_attr( $raq_data['user_email'] ); ?>"><?php echo esc_html( $raq_data['user_email'] ); ?></a></p>
<!--Neues Feld: Telefon -->
<p><strong><?php esc_html_e( 'Telefon:', 'yith-woocommerce-request-a-quote' ); ?></strong> <a href="tel:<?php echo esc_attr( $raq_data['user_tel'] ); ?>"><?php echo esc_html( $raq_data['user_tel'] ); ?></a></p>
Fazit
Grundsätzlich muss jeder selbst wissen ob er das Formular manuell erweitert oder sich für die Pro Version des Plugins entscheidet und damit auch die Entwickler unterstützt. Diese könnte ihr hier *erwerben. In meinem Fall habe ich deutlich mehr benötigt und auch an der Artikelliste etwas anpassen müssen was es auch nicht in der Pro Version gegeben hätte.
*Nicht gesponserte Werbung