Вы можете использовать крючки "woocommerce_add_cart_item_data", "woocommerce_get_item_data", "woocommerce_checkout_create_order_line_item".
function my_add_item_data($cart_item_data, $product_id, $variation_id)
{
if(isset($_REQUEST['user_name']) && $_REQUEST['user_name'] != ""){
$cart_item_data['user_name'] = sanitize_text_field($_REQUEST['user_name']);
}
if (isset($_REQUEST['user_email']) && $_REQUEST['user_email'] != "" ){
$cart_item_data['user_email'] = sanitize_text_field($_REQUEST['user_email']);
}
return $cart_item_data;
}
add_filter('woocommerce_add_cart_item_data', 'my_add_item_data' ,10,3);
function my_add_item_meta($item_data, $cart_item)
{
if(array_key_exists('user_name', $cart_item))
{
$user_name = $cart_item['user_name'];
$item_data[] = array(
'key' => 'User Name',
'value' => $user_name
);
}
if(array_key_exists('user_email', $cart_item))
{
$user_email= $cart_item['user_email'];
$item_data[] = array(
'key' => 'User Email',
'value' => $user_email
);
}
return $item_data;
}
add_filter('woocommerce_get_item_data', 'my_add_item_meta', 10, 2);
function my_add_custom_order_line_item_meta($item, $cart_item_key, $values, $order)
{
if(array_key_exists('user_name', $values))
{
$user_name = $values['user_name'];
$item->add_meta_data( 'User Name', $user_name );
}
if(array_key_exists('user_email', $values))
{
$user_email= $values['user_email'];
$item->add_meta_data( 'User Email', $user_email);
}
}
add_action( 'woocommerce_checkout_create_order_line_item', 'my_add_custom_order_line_item_meta', 10, 4 );
Обновлено : Пожалуйста, обратитесь к руководству, https://businessbloomer.com/woocommerce-visual-hook-guide-single-product-page/ 1009 * Вы можете напечатать поля ввода, которые вы хотите поместить в заданную c позицию. Например, используйте действие woocommerce_before_add_to_cart_button, чтобы поместить поля ввода перед кнопкой «Добавить в корзину».
function my_before_add_to_cart_button(){
echo '<input type="text" name="user_name" placeholder="" value=""/>';
echo '<input type="text" name="user_email" placeholder="" value=""/>';
}
add_action('woocommerce_before_add_to_cart_button', 'my_before_add_to_cart_button');