web-dev-qa-db-ja.com

Woocommerceラッパーで配置を変更する

価格の配置を上からカートに追加ボタンの横に変更し、価格とカートに追加ボタン(フォーム)を両方とも1つのdivで囲むようにしています。

私はそれが悪い方法でも正しい方法でもわからないが、どういうわけか配置を変更することができたが、今では両方でラップするのが困難になっている

ここで私がやっていること

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

しかし私が追加しているとき、それは<div class="buy-box"> </div>のようにトップに投げています

今私は何をすべきか私は上記のdivで価格をラップしてカートに追加することができます。

2
pixelngrain

さて、私はこれを解決しましたが、それが正しい方法か間違った方法かを知りません。あなたの専門家がいくつかのより良い指針を与えることを願っています。

私がしたことは、add_action関数に2つの関数を追加し、それらをラッパーとして使用したことです。

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

それが唯一の正しい方法ですか?私はこの長くて面倒な方法より良い方法がなければならないと確信しています。

提案してください。

3
pixelngrain

これら2つをテーマ関数に追加しました。

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