Cum pot suprascrie aceste funcții pentru butoanele widget-ului coș WooCommerce
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.
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?

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ă.

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?

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

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);
