Woocommerce - 显示循环内的变化

时间:2012-11-30 12:17:15

标签: php wordpress variables loops woocommerce

<?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)并有一个链接将该变量添加到篮子中。 / p>

干杯!

3 个答案:

答案 0 :(得分:3)

单个帖子页面的变体下拉模板文件位于: woocommerce \模板\单品\添加到购物车\ 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

我希望这是其他人可以帮助建立的开始。

答案 1 :(得分: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;

请告诉我这是否有帮助:)

答案 2 :(得分:2)

我在Remi Corson's blog找到了一个简单的方法。
使用以下内容更改购物车按钮的href值:

http://example.com/cart/?add-to-cart=[PRODUCT_ID]&variation_id=[VARIATION_ID]&attribute_pa_[ATTRIBUTE_SLUG]=[ATTRIBUTE_SLUG_VALUE]

示例:

http://example.com/cart/?add-to-cart=123&variation_id=456&attribute_pa_colour=black

使用get_available_variations();函数很容易获得变化值。对于产品ID,您可以使用get_the_ID();功能。