Woocommerce woocommerce_checkout_create_order_line_item似乎没有开火

问题描述 投票:1回答:1

在我的情况下,将订购订单添加到当前用户的购物车中,其中包含用于计算有关订购的其他数据(例如下一个续订日期,订购价格等)的其他数据。通过使用以下方法,这可以很好地工作:

$woocommerce->cart->add_to_cart($product->get_id(), '1', '0', array(), array(
    PVS_META_DATA_KEY_INPUTS => $test_data['result']['inputs'],
    PVS_META_DATA_KEY_MONTHS => $test_data['result']['month-data'],
    PVS_META_DATA_KEY_PRODUCTS => $test_data['result']['product-data']
));

通过这种方式,对我来说,最后一步是从购物车的自定义数据中获取月份和产品元数据,并出于订单履行的原因将其与订阅一起存储。我的研究表明,我可能需要使用woocommerce_checkout_create_order_line_item操作。以下是我的代码:

function pvs_woocommerce_checkout_create_order_line_item($item, $cart_item_key, $values, $order)
{
    var_dump($item);
    echo '<br />';
    var_dump($cart_item_key);
    echo '<br />';
    var_dump($values);
    echo '<br />';
    var_dump($order);

    if (isset($values[PVS_META_DATA_KEY_INPUTS]))
    {
        $item->add_meta_data(PVS_META_DATA_KEY_INPUTS, json_encode($values[PVS_META_DATA_KEY_INPUTS]));
    }

    if (isset($values[PVS_META_DATA_KEY_MONTHS]))
    {
        $item->add_meta_data(PVS_META_DATA_KEY_MONTHS, json_encode($values[PVS_META_DATA_KEY_MONTHS]));
    }

    if (isset($values[PVS_META_DATA_KEY_PRODUCTS]))
    {
        $item->add_meta_data(PVS_META_DATA_KEY_PRODUCTS, json_encode($values[PVS_META_DATA_KEY_PRODUCTS]));
    }
}
add_action('woocommerce_checkout_create_order_line_item', 'pvs_woocommerce_checkout_create_order_line_item', 10, 4);

但是,在结帐时,我从此操作中从未得到任何输出。检查WooCommerce状态页,没有错误被返回-因此,如果它失败了,它就是默默地失败了。作为健全性检查,我还使用了以下函数/操作来查看是否正在调用它,而另一个则失败:

function idk_im_losing_my_mind_tho($item, $cart_item_key, $values, $order)
{
    echo 'Please work ;(';
}
add_action('woocommerce_checkout_create_order_line_item', 'idk_im_losing_my_mind_tho', 10, 4);

关于以下方面的任何建议:a)开始执行此操作或b)结帐后按订单存储购物车数据?

我们正在使用WordPress版本5.3.2,WooCommerce版本3.9.1和WooCommerce订阅版本3.0.1。非常感谢您的帮助!

php wordpress woocommerce action woocommerce-subscriptions
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.