-1

我的商店有问题,我想设置一些隐藏的输入字段。每个字段都与我的产品的变体 ID 相关(它们都有三个变体)

<input type="hidden" class="one" name="id" value"value-of-first-variation"/>
<input type="hidden" class="two" name="id" value"value-of-second-variation"/>
<input type="hidden" class="three" name="id" value"value-of-three-variation"/>

但我很困惑如何做到这一点。我在 SO 中看到了许多关于获取所有变体 ID 的帖子,但不确定如何执行此最后一步并获取每个输入字段的值执行 get 操作以获得正确的 ID。有任何想法吗?

4

2 回答 2

0

要获取变量产品中的变体 ID 数组,您将使用WC_Product get_children()方法

在下面的代码中,如果可以使用变量产品 WC_Product 对象实例,则需要获取它:

global $product;

在这种情况下,您将使用:

// Get the Variable product WC_Product object instance
$product = wc_get_product( get_the_id() );

现在剩下的代码显示与变体 ID 相关的所有需要​​的隐藏输入字段:

$childern_variations_ids = $product->get_children(); // The variations IDs

// Loop through the array of Variations IDs to output related hidden fields
foreach(  $childern_variations_ids as $key => $variation_id ){
    // Output a hidden field for each variation ID
    echo '<input type="hidden" class="variation variation-'.$key.'" name="id" value"'.$variation_id.'"/>';
}

现在,您将获得一组与可变产品的变体 ID 相关的隐藏输入字段。

于 2018-07-12T16:01:04.660 回答
0

要获取任何产品的所有变体 ID,请尝试以下操作 -

    $args = array(
        'post_type'     => 'product_variation',
        'post_status'   => array( 'private', 'publish' ),
        'numberposts'   => -1,
        'orderby'       => 'menu_order',
        'order'         => 'asc',
        'post_parent'   => get_the_ID() // get parent post-ID
    );
    $variations = get_posts( $args );

    foreach ( $variations as $variation ) {

        // get variation ID
        $variation_ID = $variation->ID;

        // get variations meta
        $product_variation = new WC_Product_Variation( $variation_ID );

        // get variation featured image
        $variation_image = $product_variation->get_image();

        // get variation price
        $variation_price = $product_variation->get_price_html();


    }

或者

 $available_variations = $product->get_available_variations();

如果您想将所有变体产品添加到购物车中,单击(根据您的评论),然后您可以使用 jquery 函数,您首先获取所有变体 id(一旦页面加载),然后在您使用 ajax必须在另一个 ajax 页面上发送所有输入(变体 id),并且在响应中,您将在链接中获得所有变体 id,例如 -

abc.com/?add-to-cart=121:1,538:1

这里是变体 id 的第一个参数,第二个(在 :) 之后是数量,您可以添加多个变体 ID,用 (,) 分隔。

然后用新链接替换您的添加到购物车按钮。

我知道这不是完整的答案,但你会从中得到一些帮助。

谢谢!

于 2018-07-12T06:10:39.983 回答