web-dev-qa-db-fra.com

Comment puis-je remplacer ces fonctions de bouton de panier de widgets WooCommerce

J'ai déjà essayé environ 20 méthodes différentes pour que cela fonctionne sans solution.

J'essaie de modifier les classes des boutons dans le widget WooCommerce Mini Cart, comme indiqué ci-dessous.

 enter image description here 

La marque pour ces boutons est écrite dans deux fonctions à l'intérieur du fichier wc-template-functions.php:

if ( ! function_exists( 'woocommerce_widget_shopping_cart_button_view_cart' ) ) {

        /**
         * Output the proceed to checkout button.
         *
         * @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' ) ) {

        /**
         * Output the proceed to checkout button.
         *
         * @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>';
        }
    }

Quelle est la bonne façon de remplacer ces fonctions dans mon propre thème afin de pouvoir modifier les classes de ces deux boutons?

2
odtcreative

Je ne sais pas si vous avez toujours besoin d’aide, mais cela pourrait aider d’autres personnes dans votre situation.

Si vous souhaitez modifier la classe de la balise <p> dans votre exemple, vous pouvez trouver le fichier à modifier dans /wp-content/plugins/woocommerce/templates/cart/mini-cart.php.

Évidemment, ne modifiez pas directement le fichier. Copiez-le dans votre dossier de thème (ou de préférence un thème enfant) sous /wp-content/themes/your-theme-folder/woocommerce/cart/mini-cart.php et vous pourrez modifier la ligne 75 pour l'insérer dans votre propre classe CSS. La ligne 75 se lit comme suit:

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

Si vous souhaitez modifier la classe CSS de la balise <a>, vous devrez alors supprimer l'action par défaut et créer la vôtre dans votre thème (ou de préférence des thèmes enfants) functions.php, par exemple.

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__( 'View cart', '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__( 'Checkout', '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 );

Vous devez vider le cache de votre navigateur ou ajouter un autre élément au panier pour voir les modifications, car le contenu du panier est enregistré dans les navigateurs sessionStorage afin d'éviter de tirer une nouvelle copie sur chaque page.

1
Mat