woocommerce_get_item_data仅返回购物车中的最后一项

时间:2018-01-15 22:01:36

标签: wordpress woocommerce hook-woocommerce

我正在为WooCommerce创建客户定义的产品领域。

我能够创建该字段,并将数据传递到购物车并检出流程。问题是,如果添加另一个没有自定义字段的产品,自定义字段将添加到我的购物车中的所有产品或完全删除。

例如,假设我的系统中有3个产品。产品A& C没有自定义字段,产品B有自定义字段。如果我添加产品A& B到购物车,A& B将附带产品B的自定义字段。如果我然后将产品C添加到购物车,它现在将删除产品A,B和C的所有相关自定义字段。换句话说,即使我只有一个产品具有此自定义字段,如果我有3个产品在我的购物车中,其中所有3个都会在购物车页面上附加自定义字段值。

当我继续检查屏幕时,它正确地向正确的产品显示自定义字段。仅在购物车页面中显示所有产品的自定义字段。

我正在使用woocommerce_get_item_data作为我的参考函数。我的过滤器代码如下所示:

function display_schedule_text_cart( $item_data, $cart_item ) {

    //var_dump($cart_item);
    $product_id = $cart_item['product_id'];
    if ( empty( $cart_item['class-1'] )) {
        return $item_data;
    }

    $class_dates = explode("|", wc_clean( $cart_item['class-1']));
    $values = "<ul>";
    foreach ($class_dates AS $v){
        $values .= "<li>".$v."</li>";
    }
    $values .= "</ul>";

    $item_data[] = array(
        'key'     => __( 'Class Dates: ', 'class-1' ),
        'value'   => $values,
        'display' => '',
    );
    return $item_data;
}

add_filter( 'woocommerce_get_item_data', 'display_schedule_text_cart', 10, 2 );

问题似乎是当我在$ cart_item上执行var_dump时,在购物车页面上的购物车商品表上,它总是返回购物车中的最后一项而不是该商品单元格的正确商品。 (并且item_data始终为空)。

非常感谢任何帮助。

谢谢!

0 个答案:

没有答案