В моем сценарии заказ подписки добавляется в корзину текущего пользователя с дополнительными данными, используемыми для расчета дополнительных данных о подписке, таких как даты следующего обновления, цена подписки и т. Д. Это прекрасно работает благодаря использованию:
$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);
Любые слова совета здесь относительно а) получения этого действия для начать стрельбу или б) получить данные корзины, хранящиеся в заказе после оформления заказа?
Мы используем WordPress версии 5.3.2, WooCommerce версии 3.9.1 и WooCommerce Subscription version 3.0.1. Любая помощь с благодарностью!