Acasă » Blog » Adăugare și completare listă de produse Woocommerce în Contact Form 7

Adăugare și completare listă de produse Woocommerce în Contact Form 7

Share this post on social!
Listă de produse Woocommerce în formularul de contact - Programare Wordpress custom

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.

Listă produse Woocommerce în formularul de contact

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

Produs croitorie - Site WordPress cu comandă online
Produs croitorie – Site WordPress cu comandă online

Lasă un răspuns

Traian Constantin Predan

Traian Constantin Predan

Inginer absolvent al Politehnicii București proiectează și construiește sisteme online. Lucrează proiecte extrem de diverse, îi plac viziunile noi care provoacă la dezvoltarea unor soluții tehnice eficiente și stabile.