web-dev-qa-db-fra.com

Woocommerce Modifier l'emplacement avec wrapper

J'essaie de modifier l'emplacement du prix de haut en bas à côté du bouton Ajouter au panier et je souhaite envelopper le bouton Prix et ajouter au panier (formulaire) avec une div.

Je ne sais pas non plus que c'est mauvais ou correct, mais j'ai réussi à changer de placement, mais j'ai maintenant du mal à envelopper les deux.

Voici ce que je fais

//first removing all from single product summary
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_sharing', 50 );

// adding and re arranging placement
function q2a_product_summary() {

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );

    echo '<div class="buy-box">';

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 30 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

    echo '</div>';

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_sharing', 50 );

}
add_action('woocommerce_single_product_summary', 'q2a_product_summary');

Mais quand j'ajoute ça jette en haut comme <div class="buy-box"> </div>

Maintenant, que dois-je faire pour pouvoir envelopper le prix et ajouter au bouton le panier avec le div ci-dessus.

2
pixelngrain

D'accord, j'ai résolu le problème, mais je ne sais pas si c'est le bon ou le mauvais. J'espère que vous expert donnera une meilleure ligne directrice.

Ce que je viens de faire vient d'ajouter deux fonctions à ma fonction add_action et de les utiliser comme wrapper.

// adding and re arranging placement
function q2a_product_summary() {

    function wrapstart () {
        echo '<div class="buy-box">';
    }

    function wrapend () {
        echo '</div>';
    }

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );  

    add_action( 'woocommerce_single_product_summary', 'wrapstart', 30 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 30 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

    add_action( 'woocommerce_single_product_summary', 'wrapend', 30 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );

    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_sharing', 50 );

}
add_action('woocommerce_single_product_summary', 'q2a_product_summary');

Est-ce seulement et la bonne façon de faire? Je suis sûr qu'il doit y avoir un meilleur moyen que ce long et désordonné.

Veuillez suggérer.

3
pixelngrain

Je viens d'ajouter ces 2 dans les fonctions de thème:

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 15 );
1
Franck