Szállítási és fizetési módok kombinálásánál szükség lehet rá, hogy bizonyos szállítási módok esetén csak a lehetséges fizetési mód(ok) jelenjenek meg a kosár oldalon.
Egyik munkám során felmerülő konkrét példa – amikor egy utánvétes szállítást választ a vevő – akkor ne jelenjen meg átutalásos vagy bankkártyás fizetési mód, hanem csak az utánvétes lehetőség. Sajnos ez a Woocommerce fizetési módoknál alapból nem kezelhető.
A megoldás egy rövid kódrészlet amit az aktív sablonunkban a functions.php fájl végére bemásolva a szükségtelen fizetési módok kikapcsolhatók.
Természetesen a módosítás előtt készítsünk biztonsági másolatot oldalunkról és mindenki saját felelősségére használja a leírtkat!
A kiválasztott fizetési módra a foxpost csomag utanvet utáni kód vonatkozik, itt kikapcsoljuk a „cheque” (készpénz), „bacs” (banki átutalás) és „barion” bankkártyás fizetési módokat.
Az eredmény:
Persze felmerül a kérdés, hogy honnan tudjuk a fizetési és szállítási módok kódjait/megnevezéseit. Az előzőek kis keresgélés után kideríthetők, a szállítási módok viszont mindig a woocommerce beállításai során „keletkeznek”. Szerencsére egy-egy rövid kód ideiglenes beszúrása után ezeket meg tudjuk jeleníteni a kosár oldalunk tetején.
Erre a következő módszert találtam, melyet szintén a functions.php -ba ideiglenesen beillesztve, a kosár oldalon az adott szállítási módot kiválasztva a szállítási mód kódja megjeníthető. (Az oldalt frissíteni kell ha másik módot vásztunk ki. )
// Get Current Shipping Method WooCommerce
add_action('wp_head', 'get_current_shipping_method');
function get_current_shipping_method(){
$current_shipping_method = WC()->session->get( 'chosen_shipping_methods' );
print('<pre>');
print_r( $current_shipping_method );
print('</pre>');
}
Az eredmény (frissítés után ez jelenik meg az oldalunk tetején):
Amennyiben kíváncsiak vagyunk a beállított fizetési módokra a következő kódot szintén a functions.php -ba bemásolva ezeket is ki tudjuk listáztatni.
//get payment methods
add_action('wp_head', 'get_payments');
function get_payments(){
echo "<h6>Payment Gateways</h6>";
foreach ( WC()->payment_gateways->payment_gateways() as $payment_gateway_id => $payment_gateway_item ) {
echo "Payment gateway '" . $payment_gateway_item->title . "' has id '" .$payment_gateway_id . "'<br>";
}
}
Nálam jelen esetben ezek voltak beállítva:
Payment Gateways
Payment gateway 'Közvetlen banki átutalás' has id 'bacs'
Payment gateway 'Készpénzes fizetés személyes átvételkor' has id 'cheque'
Payment gateway 'Utánvétes fizetés' has id 'cod'
Payment gateway 'Barion' has id 'barion'
A fenti leírással egyetlen egy probléma van, mégpedig az, hogy a functions.php fájl mindig az adott beállított témahoz kapcsolódik, tehát új téma esetén – sőt a jelenlegi téma frissítésekor is – a kódot újra be kell illesztenünk… Ahhoz, hogy ezt elkerüljük több megoldás is van. Természetesen, mint szinte mindenre, erre is van plugin ami megteszi helyettünk, viszont a legjobb ha saját magunk hozunk létre egy plugint… De ennek módjáról majd egy következő bejegyzésben olvashatsz.
Amennyiben tetszett a cikk illetve hasznosnak találtad szívesen venném ha like-olnád a Facebook illetve az Instagram oldalamat :)
Ez a weboldal sütiket használ, hogy a lehető legjobb felhasználói élményt nyújthassuk. A cookie-k információit tárolja a böngészőjében, és olyan funkciókat lát el, mint a felismerés, amikor visszatér a weboldalunkra, és segítjük a csapatunkat abban, hogy megértsék, hogy a weboldal mely részei érdekesek és hasznosak.
Feltétlenül szükséges sütik
A feltétlenül szükséges sütiket mindig engedélyezni kell, hogy elmenthessük a beállításokat a sütik további kezeléséhez.
Amennyiben ez a süti nem kerül engedélyezésre, akkor nem tudjuk elmenteni a kiválasztott beállításokat, ami azt eredményezi, hogy minden egyes látogatás alkalmával ismételten el kell végezni a sütik engedélyezésének műveletét.
Funkcionális sütik
Ez a webhely a Google Analytics-et és a Facebbok pixelt használja anonim információk gyűjtésére, mint például az oldal látogatóinak száma és a legnépszerűbb oldalak.
A cookie engedélyezése lehetővé teszi, hogy javítsuk honlapunkat.
A feltétlenül szükséges sütiket mindenkor engedélyezni kell, hogy elmenthessük a beállításokat a sütik további kezeléséhez.