【问题标题】:Output hidden input fields for each Variation of a Woocommerce variable product为 Woocommerce 变量产品的每个变体输出隐藏的输入字段
【发布时间】:2018-07-10 19:26:02
【问题描述】:

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

【问题讨论】:

  • 您不需要此隐藏字段,因为变体 ID 已显示在隐藏字段中,当它被选中时...您应该澄清您的问题,因为我们不明白您要做什么.
  • 是的,它会让人感到困惑。基本上,我想使用一系列使用 JS 的 Add to Cart URL 中的所有变体 ID 一次将所有变体添加到购物车中。我已经找到了产品 ID。只是不是这部分。

标签: php wordpress woocommerce hidden-field variation


【解决方案1】:

要获取任何产品的所有变体 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,用(,)分隔。

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

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

谢谢!

【讨论】:

  • 我刚刚尝试了添加到购物车链接的想法,这也是我打算使用它的地方,但是使用 ?add-to-cart=121"1,538:1 方法没有添加任何东西到我基于 WooCommerce 的购物车。
  • 顺便说一句,我尝试了顶级方法,效果很好。但是,如果我只想获取我的一个 ID 而不是所有 ID,该怎么办。比如假设有三个 ID,而我只想要第二个?
  • 应该是 - abc.com/?add-to-cart=121:1,538:1(不是 ?add-to-cart=121"1,538:1),这里是第一个参数 121是数量为 1 的变体 ID,与数量为 1 的 538(变体 ID)相同
  • 那么,您想在页面加载时获取选定的变体 ID 还是任何特定的 ID?
【解决方案2】:

要获取变量产品中的变体 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 相关的隐藏输入字段。

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 2018-09-26
    • 1970-01-01
    • 2019-04-26
    • 2019-07-25
    • 2020-05-03
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多