Pentru adăugarea unui element de formular dropdown list (select box) cu produse Woocommerce în formularul de contact asigurat de pluginul Contact Form 7 se poate insera în fișierul functions.php al temei active următoarea bucățică de cod php.
//utilizam formatul de optiuni valoare|eticheta cu separator de tip pipe
define('WPCF7_USE_PIPE', true);
/**
* Adaugare drop down list cu produsele woocommerce in contact form 7
*
*
* @param [type] $tag
* @param [type] $unused
* @return void
*/
function dynamic_field_values($tag, $unused)
{
global $wp_query; //obiectul de interogare specific paginii curente
/* pentru formularul care are urmatorul tag select cu name=woo-products in continut [select woo-products]
* In sectiunea corespondenta din admin contact form 7, optiunea selectata din drop down se afiseaza in corpul mailului astfel: Produsul: <a href="[_raw_woo-products]">[woo-products]</a>
*/
if ($tag['name'] == 'woo-products') {
// Argumente implicite pentru interogarea care va popula select box-ul din formular
$args = array(
'status' => array('publish'),
'type' => array_merge(array_keys(wc_get_product_types())),
'parent' => null,
'sku' => '',
'category' => array(),
'tag' => array(),
'limit' => -1, // -1 for unlimited
'orderby' => 'title',
'order' => 'ASC',
'return' => 'objects',
);
// Vectorul cu obiectele de tip produs
$products = wc_get_products($args);
// parcurgem lista de produse obiect
foreach ($products as $product) {
// Obtinem cateva variabile specifice produsului
// id-ul produsului
$product_id = $product->get_id();
// denumirea produsului
$product_name = $product->get_name();
//codul sku daca exista
$product_sku = $product->get_sku();
// link-ul catre pagina de detalii produs
$permalink = $product->get_permalink();
// construim optiunea din select box pentru acest produs
// elementul pipe "|" separa valoarea de eticheta
$tag['raw_values'][] = $permalink . "|" . $product_name . " - ID: " . $product_id . " - SKU: " . $product_sku;
// $tag['values'][] = $permalink;
// $tag['labels'][] = $product_name . " - ID: " . $product_id . " - SKU: " . $product_sku;
}
$pipes = new WPCF7_Pipes($tag['raw_values']);
// valoarile optiunilor din select box
$tag['values'] = $pipes->collect_befores();
//etichetele optiunilor din select box
$tag['labels'] = $pipes->collect_afters();
$tag['pipes'] = $pipes;
}
return $tag;
}
add_filter('wpcf7_form_tag', 'dynamic_field_values', 10, 2);
Pentru conținutul mesajului de email trimis către posesorul site-ului web, vom completa astfel. În primul rând, conținutul HTML al formularulu se completează astfel
<label> Numele tău
[text* your-name] </label>
<label> Emailul tău
[email* your-email] </label>
<label> Subiect
[text* your-subject] </label>
<label> Produs
[select woo-products] </label>
<label> Mesajul tău (opțional)
[textarea your-message] </label>
[submit "Trimite"]
Iar conținutul mesajului de email trimis către administratorul site-ului web este
Nume: [your-name]
Email: [your-email]
Subiect: [your-subject]
Produsul: <a href="[_raw_woo-products]">[woo-products]</a>
Corp mesaj:
[your-message]
--
Acest email a fost trimis printr-un formular de contact pe [_site_title] ([_site_url])
Partea care ne interesează este
Produsul: <a href="[_raw_woo-products]">[woo-products]</a>
Exemplu concret pentru selectarea produsului de interes pe un site de croitorie cu comandă online
Pe un site de croitorie afacere de familie cu comandă online am implementat această lucrare pentru formularul de contact bazat pe pluginul Contact Form 7 aflat în pagina de contact.
În mesajul de email primit de administratorul site-ului web sunt primite toate detaliile inclusiv titlul și link-ul către pagina produsului, id-ul și sku-ul acestuia.
Mesajul de email primit cu produsul selectat de potențialul client
Nume: Traian
Email: traianpredan@yahoo.com
Subiect: Fusta tulle
Produsul: Fusta tulle femei alba – ID: 6965 – SKU: 2
Corp mesaj:
Buna ziua, Ma intereseaza costul realizarii unei fuste tulle alba. Multumesc
--
Acest email a fost trimis printr-un formular de contact pe Atelier Tina (https://ateliertina.ro)
Produsul se acceseaza prin linkul existent
Află detalii privind realizarea site-urilor pe WordPress
Creare site WordPress
Sau ia legatura cu noi aici