Hooks und Filter | Media | WP-Plugins

Wie man eine Datei aus der Mediathek automatisiert über Contact-Form 7 versendet und dabei verhindert, dass die Datei anschließend gelöscht wird.

rope 2828754 1920

Über den 'wpcf7_before_send_mail'-Hook lässt sich was über Contact-Form-7 versendet wird (und daneben noch alles veranlasst werden soll) modifizieren. So ist es auch kein Problem festzulegen, eine Datei, deren ID z.B. in einem benutzerdefinierten Feld definiert ist, an die E-Mail des Absenders einer Nachricht zu hängen. Das funktioniert über denselben Mechanismus, über den eine Datei die über das Formular hochgeladen wird, zum E-Mail-Anhang wird.

Allerdings war die Datei im Anschluss dann weg. Die Lösung bestand darin, eine temporäre Kopie der Datei anzulegen, und diese anstelle des Originals an die E-Mail zu hängen.

Beispiel, wie man ein Attachment aus Custom-Field-Daten an ein Formular hängt

function my_theme_attach_pdf($cf7) { /* Check Form ID */ if ( $cf7->id() == '42' ) { $submission = WPCF7_Submission::get_instance(); if ( $submission ) { /* ID des Posts von dem aus das Formular versendet wird ermitteln */ $unit_tag = $submission->get_meta( 'unit_tag' ); if ( preg_match( '/^wpcf7-f(\d+)-p(\d+)-o(\d+)$/', $unit_tag, $matches ) ) { $post_id = absint( $matches[2] ); /* Post ID */ } /* ID des Anhangs ermitteln */ $attachment_id = get_post_meta( $post_id, 'my_attachment_id_custom_field', true ); if ( !empty( $attachment_id ) ) { $mail_subject = 'Text für Betreff'; $mail_body = 'Content der E-Mail'; $mail1 = $cf7->prop('mail'); $mail1['subject'] = $mail_subject; $mail2 = $cf7->prop('mail_2'); $mail2['subject'] = $mail_subject; $mail2['body'] = $mail_body; /* Dateinendung des Attachments extrahieren */ $extension = pathinfo( get_attached_file( $attachment_id ), PATHINFO_EXTENSION ); $title = get_the_title( $attachment_id ); $attname = sanitize_title( $title ); $attachment = get_attached_file( $attachment_id ); $uploads = wp_upload_dir(); $time = date('d-m-Y-h-i-s'); /* Name für temporäre Kopie definieren */ $attach = $uploads['path'] . '/' . $attname . '-' . $time . '.' . $extension; /* temporäre Kopie */ copy( $attachment, $attach ); /* Attachment anhängen */ $submission->add_uploaded_file( 'pdf', $attach ); $mail2['attachments'] .= '[pdf]'; /* ggf. Erfolgsnachricht modifzieren */ $messages=$cf7->prop('messages'); $messages['mail_sent_ok'] = 'Die Datei wurde versendet'; $cf7->set_properties( array( 'mail' => $mail1 ) ); $cf7->set_properties( array( 'mail_2' => $mail2 ) ); /* für Debugging: ch7-Objekt in Textdatei schreiben */ // file_put_contents( get_template_directory() . '/cf7-logfile.txt',print_r($cf7,1), LOCK_EX ); } } } } add_action( 'wpcf7_before_send_mail', 'my_theme_attach_pdf' );

weiter schmökern

Schreibe einen Kommentar

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden.

Deine E-Mail-Adresse wird nicht veröffentlicht.