2
<?php

    switch ( $product->product_type ) {
        case "variable" :
            $link   = apply_filters( 'variable_add_to_cart_url', get_permalink( $product->id ) );
            $label  = apply_filters( 'variable_add_to_cart_text', __('Select options', 'woocommerce') );
        break;
        case "grouped" :
            $link   = apply_filters( 'grouped_add_to_cart_url', get_permalink( $product->id ) );
            $label  = apply_filters( 'grouped_add_to_cart_text', __('View options', 'woocommerce') );
        break;
        case "external" :
            $link   = apply_filters( 'external_add_to_cart_url', get_permalink( $product->id ) );
            $label  = apply_filters( 'external_add_to_cart_text', __('Read More', 'woocommerce') );
        break;
        default :
            $link   = apply_filters( 'add_to_cart_url', esc_url( $product->add_to_cart_url() ) );
            $label  = apply_filters( 'add_to_cart_text', __('Add to cart', 'woocommerce') );
        break;
    }

    printf('<a href="%s" rel="nofollow" data-product_id="%s" class="add_to_cart_button button product_type_%s">%s</a>', $link, $product->id, $product->product_type, $label);

?>

顧客がショップページからカートに変数製品を追加できるように、ループ内にバリエーションを表示しようとしています (以下のスクリーンショットを参照してください)...

http://cl.ly/image/42401k0X0X2I

関数を含める必要があることはわかっています-

get_available_variations();

そして、これはすでに配列を返していると確信しています。その配列を選択ドロップダウンに入れ、バリエーション(S、M、L、XL)をリストし、そのバリエーションをバスケットに追加するためのリンクを持っているだけです。

乾杯!

4

3 に答える 3

3

同じ問題を解決しようとしているときに、あなたの投稿を見つけました。やっと見つけた…

function woocommerce_variable_add_to_cart() {
    global $product;

    // Enqueue variation scripts
    wp_enqueue_script( 'wc-add-to-cart-variation' );

    // Load the template
    woocommerce_get_template( 'single-product/add-to-cart/variable.php', array(
            'available_variations'  => $product->get_available_variations(),
            'attributes'            => $product->get_variation_attributes(),
            'selected_attributes'   => $product->get_variation_default_attributes()
        ) );
}
}

woocommerce-template.php

これは loop/add-to-cart.php で機能します

switch ( $product->product_type ) {
        case "variable" :
            $link   = apply_filters( 'variable_add_to_cart_url', get_permalink( $product->id ) );
            $label  = woocommerce_variable_add_to_cart();
        break;

これが役立つかどうか教えてください:)

于 2013-01-22T16:56:55.803 に答える
3

単一投稿ページのバリエーション ドロップダウン テンプレート ファイルは、woocommerce\templates\single-product\add-to-cart\variable.php にあります。

製品変数情報を渡すには、次のスクリプトが必要です。

<script type="text/javascript">
var product_variations_<?php echo $post->ID; ?> = <?php echo json_encode( $available_variations ) ?>;
</script>

次の非表示フィールドと同様に:

<input type="hidden" name="variation_id" value="" /> - where the value is the variation ID

他の人がその上に構築するのを助けることができるスタートであることを願っています.

于 2012-11-30T18:20:04.687 に答える