WooCommerce - Afișează costul de livrare pe pagina produsului

6 oct. 2013, 21:14:26
Vizualizări: 30.3K
Voturi: 4

Dezvolt un site de comerț electronic folosind WooCommerce pentru un client, și aceștia doresc să poată afișa costul de livrare al unui produs direct pe pagina produsului (pentru că așa au și pe vechiul lor site). Există vreo modalitate de a face acest lucru? Am căutat peste tot și nu am găsit nimic concludent, și deși există o întrebare similară aici pe StackExchange, nimeni nu a răspuns la întrebare.

Știu că există un plugin de 79$ care face acest lucru, dar există o modalitate de a seta costul de livrare per produs? Aș prefera să evit achiziționarea unui plugin.

0
Toate răspunsurile la întrebare 2
8

Puteți afișa costurile de transport pe articol în WooCommerce 2.x. costuri transport pe produs

Deoarece ați setat prețurile ca fixe și pe articol, le puteți afișa în descrierea produsului introducându-le direct în descriere, sau puteți accesa clasa de transport pentru articol (este o taxonomie) "product_shipping_class" care poate fi atribuită fiecărui produs individual sau prin editare rapidă pentru toate produsele.

Cum să o afișați într-un șablon de produs? Fiecare pagină de produs este organizată într-un director numit woocommerce. Puteți copia acel director din directorul plugin-ului Woocommerce direct în folderul temei dumneavoastră. Odată copiat, puteți face orice modificări fără ca actualizările viitoare să suprascrie modificările din tema dumneavoastră. Aici este link-ul către instrucțiunile pentru fișierele de temă WooCommerce.

Deci începeți cu pagina 'single-product.php'. Aceasta este bucla principală pentru pagina de produs individual, apoi 'content-single-product.php' care detaliază cârligele din șablonul produsului.

În funcție de locul unde doriți să afișați informațiile de transport, puteți accesa termenii atribuiți produsului (în cazul în care aveți tarife diferite pentru produse diferite). Folosiți get_the_terms( $post->ID, 'product_shipping_class'). Pentru mai multe informații despre lucrul cu apeluri vedeți acest articol.

Folosind niște PHP pentru a analiza tabloul, veți ști clasa de transport și apoi puteți afișa informații despre costurile de transport cu un calcul bazat pe clasa de transport returnată.

Există câteva alte metode de a face acest lucru care implică obiectul clasei de transport, dar acesta ar trebui să vă ajute să începeți.

6 oct. 2013 22:26:31
Comentarii

Mulțumesc pentru asta, Steve, am o singură întrebare suplimentară - am folosit acel fragment/cod pe care l-ai pus mai sus adaptându-l pentru a crea mai întâi o variabilă și apoi am afișat variabila în locul potrivit din șablon. Cu toate acestea, afișează doar cuvântul 'Array'. Nu sunt expert în PHP, așa că nu sunt sigur cum să procedez de aici? În WC, am creat o Clasă de Livrare pentru fiecare preț (Livrare: £3.00, Livrare: £4.00 etc.), și am atribuit un cost fiecăreia în secțiunea de Livrare din setări.

tristanojbacon tristanojbacon
7 oct. 2013 05:12:26

Încearcă să afișezi variabila cu var_dump($variable). Ar trebui să vezi ce conține array-ul. Apoi poți accesa elementele specifice prin structura lor din array.

Steve Eldridge Steve Eldridge
7 oct. 2013 17:54:07

Am făcut un var_dump, dar a afișat bool(false).....

tristanojbacon tristanojbacon
7 oct. 2013 17:59:51

Bine, ai atribuit o clasă de livrare articolelor?

Steve Eldridge Steve Eldridge
7 oct. 2013 20:41:01

Da, articolul pe care l-am testat are o clasă de livrare numită Livrare: £3.00, pe care am legat-o la tabelul de transport Flat Rate, cu costul de £3.00. Am confirmat că funcționează, deoarece când adaug articolul în coș, costul de livrare afișează £3.00

tristanojbacon tristanojbacon
7 oct. 2013 21:17:07

De asemenea, există o soluție în clasa $product. Trebuie să te asiguri că apelezi global $product. Poți apela clasele cu codul php echo $product->get_price_html(); pentru a vedea clasa produsului pe paginile de produs.

Steve Eldridge Steve Eldridge
8 oct. 2013 23:28:33

Bine, am adăugat <?php echo $product->get_shipping_class(); ?> în template și afișează slug-ul clasei de transport! Sunt aproape! Cum pot face ca acel apel să afișeze numele termenului, în loc de slug? Mulțumesc pentru ajutor până acum :)

tristanojbacon tristanojbacon
9 oct. 2013 04:08:02

ok, suntem foarte aproape și iată răspunsul final, <?php $slug = $product->get_shippingclass(); $slugobject = get_term_by('slug', $slug, 'product_shipping_class'); echo $slugobject->name; ?>

Steve Eldridge Steve Eldridge
10 oct. 2013 01:07:47
Arată celelalte 3 comentarii
1

Postare veche dar ar putea ajuta la afișarea prețului costului de livrare

<?php
$slug = $product->get_shipping_class_id();
$slugobject = get_term_by('term_taxonomy_id', $slug, 'product_shipping_class');
echo $slugobject->description;?>

Acest script va funcționa pentru tipul de livrare flat rate:

global $product; /* Eliminați dacă este deja setat.. */
$shipping_class = $product->get_shipping_class();
$flat_rate = new WC_Shipping_Flat_Rate;
$symbol = get_woocommerce_currency_symbol();
echo $symbol . $flat_rate->flat_rates[$shipping_class]['cost'];
3 feb. 2015 12:06:41
Comentarii

Acest lucru nu mai funcționează pe WooCommerce 2.6+

Avishai Avishai
1 feb. 2017 20:30:04