Contact Form 7 - Cum trimit un atașament către expeditor?

19 oct. 2011, 15:35:53
Vizualizări: 31.3K
Voturi: 2

Am instalat plugin-ul Contact Form 7 pe instanța mea de WordPress 3.2.1.

Am configurat un formular de contact pentru ca utilizatorii să poată solicita evaluări.

Totul funcționează bine, dar speram că atunci când trimit o solicitare, aș putea să le trimit un email cu o broșură de produs atașată.

În prezent am setat-o astfel:

exemplu configurare formular contact form 7 cu atașament

Am încercat să folosesc [file-691] unde 691 este ID-ul fișierului media încărcat în biblioteca media.

Niciuna dintre variante nu pare să funcționeze.
Care este modalitatea corectă de a realiza acest lucru?

0
Toate răspunsurile la întrebare 5
0

Din câte știu eu, funcționalitatea pe care încerci să o folosești nu este destinată să fie utilizată în acest fel. De fapt, ea este concepută pentru a oferi persoanei care trimite formularul opțiunea de a încărca un fișier care va fi trimis împreună cu mesajul său prin email.

Nu cred că o astfel de funcționalitate este disponibilă în Contact Form 7.

19 oct. 2011 17:54:41
0

CF7 nu va funcționa în acest fel. Ceea ce încerci să faci trebuie configurat la nivel de server sau client de email, nu la nivel de aplicație în WP.

Configurează un sistem de răspuns automat pe serverul de email sau în clientul de email.

24 ian. 2012 21:56:54
2

Încearcă pluginul email-before-download utilizat împreună cu Download Monitor. Acestea se integrează perfect cu CF7 și tot ce trebuie să faci este să selectezi atașamentul care să fie trimis prin email în locul unui link de descărcare direct. Funcționează excelent.

20 sept. 2012 20:44:26
Comentarii

Încearcă să reformatezi răspunsul tău cu mai multe detalii specifice.

Brian Fegter Brian Fegter
29 sept. 2012 08:19:32

@aly22, poți să-mi arăți sursa corectă pentru "email-before-download"?

alex alex
17 feb. 2013 21:34:34
1

Îmi cer scuze pentru engleza mea precară și pentru abilitățile mele PHP și mai slabe.

Puteți folosi email-before-download dar... nu am reușit să-l fac să funcționeze cum doream. Am încercat un pic de cod și cred că această soluție funcționează. Nu este cea mai elegantă metodă, dar puteți folosi link-ul către fișier în câmpul de atașamente din interfața de administrare. Introduceți acolo ceva de genul "wp-content/uploads/2013/05/Fisier.pdf" (fără ghilimele) în loc de "[file-1234]" și adăugați următorul cod în fișierul functions.php:

function mycustom_cf_before_action(&$wpcf7_data) {
    global $mailcounter;
    $mailcounter = 0;
    if ((!empty($wpcf7_data->mail['attachments'])) and (!(0 === strpos($wpcf7_data->mail['attachments'], '['))) ) {
        global $cmail1;
        $cmail1 = '';
        $cmail1 = $wpcf7_data->mail['attachments'];
    }
    if ((!empty($wpcf7_data->mail_2['attachments'])) and (!(0 === strpos($wpcf7_data->mail_2['attachments'], '['))) ) {
        global $cmail2;
        $cmail2 = '';
        $cmail2 = $wpcf7_data->mail_2['attachments'];
    }
}
add_action('wpcf7_before_send_mail', 'mycustom_cf_before_action',1);

function mycustom_wpcf7_mail_components($components){
    global $cmail1;
    global $cmail2;
    global $mailcounter;

    if (($mailcounter == 0) and (!empty($cmail1)) and (empty($components['attachments']))) {
          $components['attachments'][] = $cmail1;
    }
    if (($mailcounter == 1) and (!empty($cmail2)) and (empty($components['attachments']))) {
          $components['attachments'][] = $cmail2;
    }
    $mailcounter = $mailcounter + 1;
    return $components;
}

add_filter( 'wpcf7_mail_components', 'mycustom_wpcf7_mail_components' );

Prima funcție verifică dacă există atașamente "statice" - orice care nu începe cu [ sau nu este gol.

A doua funcție adaugă atașamentul static la momentul trimiterii. Am încercat să folosesc "uploaded_files" dar atunci atașamentele sunt șterse. Deoarece partea de Components este aceeași pentru mail1 și mail2, trebuie să numărați cumva. Acesta este motivul pentru variabila $mailcounter. Variabilele $cmail1 și $cmail2 servesc pentru a obține link-urile către atașamente în partea de components. CF7 nu mai ține cont de datele originale ale formularului de contact în acest moment, așa că aceasta a fost singura soluție pe care am găsit-o.

3 mai 2013 23:04:43
Comentarii

Aceasta nu mai funcționează în versiunea 5.4. Totuși, poți folosi următoarea alternativă: add_filter( 'wpcf7_mail_components', function($components, $form = null, $mail = null) { $components['attachments'][] = 'PATH_TO_FILE.pdf'; return $components; }, 100, 3 );

Earlee Earlee
2 iun. 2021 08:04:21
0
-3

Cred că acesta este plugin-ul la care se face referire: https://wordpress.org/plugins/email-before-download/

24 iul. 2014 17:34:30