Код, который вы используете, не передает какой-либо товар в корзину, он просто отображает существующие пользовательские данные об элементе корзины.
Чтобы добавить пользовательские данные об элементе корзины из дополнительных полей продукта или что-то еще связанное, вы будете использоватьчто-то вроде (например, требуются дополнительные поля на отдельных страницах товара) :
add_filter( 'woocommerce_add_cart_item_data', 'add_custom_cart_item_data', 10, 3 );
function add_custom_cart_item_data($cart_item_data, $product_id, $variation_id ){
if( isset( $_POST['product_field1'] ) ) {
$cart_item_data['custom_data'][1] = sanitize_text_field( $_POST['product_field1'] );
}
if( isset( $_POST['product_field2'] ) ) {
$cart_item_data['custom_data'][2] = sanitize_text_field( $_POST['product_field2'] );
}
return $cart_item_data;
}
Теперь для отображения данных пользовательского элемента корзины на страницах корзины и оформления заказа:
add_filter( 'woocommerce_get_item_data', 'display_enrolment_text_cart', 10, 2 );
function display_enrolment_text_cart( $item_data, $cart_item ) {
if ( isset($cart_item['enrolmentName']) && ! empty($cart_item['enrolmentName']) ) {
$item_data[] = array(
'key' => __( 'Enrolment', 'test' ),
'value' => wc_clean( $cart_item['enrolmentName'] ),
'display' => '',
);
}
// Additional displayed custom cat item data
if ( isset($cart_item['custom_data'][1]) && ! empty($cart_item['custom_data'][1]) ) {
$item_data[] = array(
'key' => __( 'Field 1', 'test' ),
'value' => wc_clean( $cart_item['custom_data'][1] ),
'display' => '',
);
}
if ( isset($cart_item['custom_data'][2]) && ! empty($cart_item['custom_data'][2]) ) {
$item_data[] = array(
'key' => __( 'Field 2', 'test' ),
'value' => wc_clean( $cart_item['custom_data'][2] ),
'display' => '',
);
}
return $item_data;
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Это должно работать.
Связанный поток: Сохранение пользовательских данных с помощью метода WC_Cart add_to_cart () в Woocommerce 3
Связанный полный поток: Добавление настраиваемого поля в продуктах для отображения в корзине, оформлении заказа и в заказах