У меня проблемы с получением значения поля пользовательского ввода продукта, чтобы использовать его для отправки значения "customer_number" по почте.Я уже могу отправить его в корзину и детали заказа, но как я получаю значение переменной для customer_number для действия по электронной почте в нижней части кода для дальнейшего использования, например, при использовании запроса mysql.
я получаю только пустое значение в электронной почте.
// add custom input field for single product //
add_action( 'woocommerce_before_add_to_cart_button', 'add_custom_fields_single_product', 20 );
function add_custom_fields_single_product(){
global $product;
?>
<div class="product-custom-fields">
Customer Number: <input type="text" placeholder="<?php _e('Customer Number', 'woocommerce'); ?>" name="customer_number">
</div>
<div class="clear"></div>
<?php
}
// add cart item data //
add_filter( 'woocommerce_add_cart_item_data', 'add_custom_fields_cart_item_data', 10, 2 );
function add_custom_fields_cart_item_data( $cart_item_data, $product_id ){
if(isset($_POST['customer_number']))
$cart_item_data['custom_data']['customer_number'] = sanitize_text_field($_POST['customer_number']);
$cart_item_data['custom_data']['unique_key'] = md5( microtime().rand() );
WC()->session->set( 'custom_data', $cart_item_data['custom_data'] );
return $cart_item_data;
}
// show custom input field data in cart //
add_filter( 'woocommerce_get_item_data', 'display_custom_fields_cart_item_data', 10, 2 );
function display_custom_fields_cart_item_data($item_data, $cart_item){
if( ! array_key_exists( 'custom_data', $cart_item ) )
return $item_data
if( array_key_exists( 'customer_number', $cart_item['custom_data'] ) )
$item_data[] = array(
'key' => __('Customer Number', 'woocommerce'),
'value' => $cart_item['custom_data']['customer_number']
);
return $item_data;
}
// Save values as Order item data and display them everywhere //
add_action('woocommerce_checkout_create_order_line_item', 'save_custom_fields_as_order_item_meta', 20, 4);
function save_custom_fields_as_order_item_meta($item, $cart_item_key, $values, $order) {
if( ! isset($values['custom_data']) )
return;
$text_domain ='woocommerce';
// Save values:
if( array_key_exists('customer_number', $values['custom_data']) ){
$item->update_meta_data( __('Customer Number', $text_domain), $values['custom_data']['customer_number'] );
}
}
// send mail with customer_number
add_action( 'woocommerce_order_status_completed', 'mail_order', 10, 1 );
function mail_order( $order_id) {
$adminmail = 'xxx@xxx.com';
$customer_number = $values['custom_data']['customer_number'] ;
wp_mail( $adminmail, "Order has completed ", "Customer Number: $customer_number");
return $item_data;
}