Pokud chcete ušetřit Vaše zákazníky klikání a zobrazit jim košík zároveň s pokladnou, tak to můžete provést i bez pluginu. Stačí přidat pár kousků kódu do souboru functions.php ve vaší šabloně nebo ve Vašem pluginu.
1. Zrušte přiřazení stránky košíku v nastavení WooCommerce
Jděte v administraci do WooCommerce > Nastavení > Pokročilé a stránku košíku ponechte prázdnou.

2. Přidání košíku na stránku pokladny
Pokud jste se někdy dívali co obsahuje stránka košíku v editoru, tak jste si všimli, že v ní byl pouze tento shortcode [woocommerce_cart], tento shortcode nám umožňuje zobrazit košík kdekoliv na webu. Vložením následujícího kódu do souboru functions.php jej dostaneme nahoru na stránku pokladny.
add_action( 'woocommerce_before_checkout_form', 'navodovna_cart_on_checkout_page_only', 5 );
function navodovna_cart_on_checkout_page_only() {
if ( is_wc_endpoint_url( 'order-received' ) ) return;
echo do_shortcode('[woocommerce_cart]');
}
3. Přesměrování odkazů košíku na pokladnu
I přes to, že jsme zrušili přiřazení stránky košíku a odstranili jej, tak se nám může stát, že nás například po kliknutí na košík odkaz dostane na neexistující stránku. Tomu předejdeme přidáním tohoto kódu, opět do functions.php.
add_action( 'template_redirect', 'navodovna_redirect_to_checkout_if_cart' );
function navodovna_redirect_to_checkout_if_cart() {
if ( !is_cart() ) return;
global $woocommerce;
// Redirect na url pokladny
wp_redirect( $woocommerce->cart->get_checkout_url(), '301' );
exit;
}
Nyní je vše hlavní připraveno. Co ale asi bude potřebovat ještě úpravu jsou styly tabulky košíku, mohou být trochu rozhozené oproti původní stránce, jelikož jsou vázané na třídu .woocommerce-cart, která na stránce pokladny není a je třeba tyto styly navázat na .woocommerce-checkout.
4. Přesměrování při prázdném košíku
Pokud potřebujete, aby se při prázdném košíku nezobrazovala pokladna, tak můžete nastavit přesměrování na libovolnou url. V tomto příkladu bude přesměrování na stránku obchodu.
add_action( 'template_redirect', 'navodovna_redirect_empty_cart_checkout_to_home' );
function navodovna_redirect_empty_cart_checkout_to_home() {
if ( is_cart() && is_checkout() && 0 == WC()->cart->get_cart_contents_count() && ! is_wc_endpoint_url( 'order-pay' ) && ! is_wc_endpoint_url( 'order-received' ) ) {
wp_safe_redirect( get_permalink( woocommerce_get_page_id( 'shop' ) ) );
exit;
}
}

5. Načtení Javascriptu pro aktualizaci košíku
Všechno je tam, kde má být, ale když chcete změnit obsah košíku a poté kliknete na tlačítko Aktualizovat košík a stránka se Vám začne načítat celá znovu. To je však nežádoucí a je potřeba načíst na stránku Javascript košíku, který bude toto řešit skrze AJAXový požadavek. Tento Javascript je ve WordPressu zaregistrován pod handlem wc-cart, takže jej stačí zavolat pomocí funkce wp_enqueue_script na stránce pokladny pomocí tohoto kódu.
function navodovna_nacti_javascript_kosiku(){
if (is_checkout()) {
wp_enqueue_script('wc-cart');
}
}
add_action( 'wp_enqueue_scripts', 'navodovna_nacti_javascript_kosiku', 10 );
You must log in to post a comment.