Cum pot suprascrie aceste funcții pentru butoanele widget-ului coș WooCommerce

3 iul. 2017, 14:26:07
Vizualizări: 24.1K
Voturi: 2

Am încercat deja aproximativ 20 de metode diferite pentru a face acest lucru să funcționeze, fără succes.

Încerc să modific clasele butoanelor din widget-ul mini coș WooCommerce așa cum este prezentat mai jos.

Exemplu butoane widget coș WooCommerce

Marcajul pentru aceste butoane este scris în două funcții din fișierul wc-template-functions.php:

if ( ! function_exists( 'woocommerce_widget_shopping_cart_button_view_cart' ) ) {

        /**
         * Generează butonul pentru a accesa coșul.
         *
         * @subpackage  Cart
         */
        function woocommerce_widget_shopping_cart_button_view_cart() {
            echo '<a href="' . esc_url( wc_get_cart_url() ) . '" class="button wc-forward">' . esc_html__( 'View cart', 'woocommerce' ) . '</a>';
        }
    }

    if ( ! function_exists( 'woocommerce_widget_shopping_cart_proceed_to_checkout' ) ) {

        /**
         * Generează butonul pentru a merge la finalizarea comenzii.
         *
         * @subpackage  Cart
         */
        function woocommerce_widget_shopping_cart_proceed_to_checkout() {
            echo '<a href="' . esc_url( wc_get_checkout_url() ) . '" class="button checkout wc-forward">' . esc_html__( 'Checkout', 'woocommerce' ) . '</a>';
        }
    }

Care este modalitatea corectă de a suprascrie aceste funcții în cadrul propriei mele teme pentru a putea modifica clasele acestor două butoane?

0
Toate răspunsurile la întrebare 2
3

Nu sunt sigur dacă mai ai nevoie de ajutor cu aceasta, dar acest lucru ar putea ajuta alții în situația ta.

Dacă dorești să modifici clasa tag-ului <p> din exemplul tău, fișierul pe care trebuie să îl editezi poate fi găsit în /wp-content/plugins/woocommerce/templates/cart/mini-cart.php

Evident, nu edita direct fișierul. Copiază-l în folderul temei tale (sau preferabil al temei copil) în /wp-content/themes/numele-temei-tale/woocommerce/cart/mini-cart.php și poți edita linia #75 pentru a adăuga propriile tale clase CSS. Linia #75 conține:

<p class="woocommerce-mini-cart__buttons buttons"><?php do_action( 'woocommerce_widget_shopping_cart_buttons' ); ?></p>

Dacă dorești să modifici clasa CSS a tag-ului <a>, atunci va trebui să elimini acțiunea implicită și să creezi una proprie în fișierul functions.php al temei tale (sau preferabil al temei copil), de exemplu:

remove_action( 'woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_button_view_cart', 10 );
remove_action( 'woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_proceed_to_checkout', 20 );

function my_woocommerce_widget_shopping_cart_button_view_cart() {
    echo '<a href="' . esc_url( wc_get_cart_url() ) . '" class="btn btn-default">' . esc_html__( 'Vezi coșul', 'woocommerce' ) . '</a>';
}
function my_woocommerce_widget_shopping_cart_proceed_to_checkout() {
    echo '<a href="' . esc_url( wc_get_checkout_url() ) . '" class="btn btn-default">' . esc_html__( 'Finalizează comanda', 'woocommerce' ) . '</a>';
}
add_action( 'woocommerce_widget_shopping_cart_buttons', 'my_woocommerce_widget_shopping_cart_button_view_cart', 10 );
add_action( 'woocommerce_widget_shopping_cart_buttons', 'my_woocommerce_widget_shopping_cart_proceed_to_checkout', 20 );

Va trebui să ștergi cache-ul browserului sau să adaugi un alt produs în coș pentru a vedea modificările, deoarece conținutul coșului este salvat în sessionStorage-ul browserului pentru a evita încărcarea unei noi copii la fiecare pagină.

4 oct. 2017 14:09:44
Comentarii

Soluția pare că ar trebui să funcționeze, dar nu merge pentru mine. Am adăugat codul în functions.php din tema copil, dar modificările par să nu aibă efect. Există cumva un alt mecanism de cache?

Karl Adler Karl Adler
6 ian. 2018 15:36:16

Nu-i nimic, am folosit o sub-temă pentru o altă sub-temă care nu utiliza funcțiile de widget...

Karl Adler Karl Adler
6 ian. 2018 15:49:41

Foarte important de menționat că acest lucru este cache-uit. Am blocat o oră ^^

Chaoste Chaoste
18 iun. 2020 14:32:31
0

Codul din răspunsul vechi nu mai funcționează. Abordarea este încă validă, dar codul nu funcționează. Deci, următorul cod funcționează în prezent, îl puteți adăuga în fișierul dvs. functions.php. (Aprilie 2021):

Mulțumiri speciale lui Mat, pentru răspunsul său.

function custom_widget_cart_btn_view_cart()
{
  echo '<a href="' . esc_url(wc_get_cart_url()) . '" class="button wc-forward">' . esc_html__('Vizualizare Coș Personalizată', 'woocommerce') . '</a>';
}

function custom_widget_cart_checkout()
{
  echo '<a href="' . esc_url(wc_get_checkout_url()) . '" class="button checkout wc-forward">' . esc_html__('Finalizare Comandă Personalizată', 'woocommerce') . '</a>';
}

function custom_widget_cart_subtotal()
{
  echo '<strong>' . esc_html__('Subtotal Personalizat: ', 'woocommerce') . '</strong> ' . WC()->cart->get_cart_subtotal();
}

remove_action('woocommerce_widget_shopping_cart_total', 'woocommerce_widget_shopping_cart_subtotal', 10);
remove_action('woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_button_view_cart', 10);
remove_action('woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_proceed_to_checkout', 20);

add_action('woocommerce_widget_shopping_cart_total', 'custom_widget_cart_subtotal', 11);
add_action('woocommerce_widget_shopping_cart_buttons', 'custom_widget_cart_btn_view_cart', 12);
add_action('woocommerce_widget_shopping_cart_buttons', 'custom_widget_cart_checkout', 21);
30 apr. 2021 06:37:53