Contact Form 7 - Cum trimit un atașament către expeditor?
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:
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?

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.

Î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.

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