为Woocommerce变量产品的每个变体输出隐藏的输入字段

时间:2018-07-10 19:26:03

标签: php wordpress woocommerce hidden-field variation

我的商店中有一个问题,我想设置一些隐藏的输入字段。每个字段都与我产品的版本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。有什么想法吗?

2 个答案:

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


    }

OR

 $available_variations = $product->get_available_variations();

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

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

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

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

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

谢谢!

答案 1 :(得分:0)

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

在下面的代码中,如果可以使用以下代码,则需要获取变量产品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相关的隐藏输入字段。