我创建了textarea字段以保存woocommerce产品说明,如果购物车中有任何产品并且有产品说明,我想将这些说明保存到管理员订单中。
// WooCommerce Products Custom Field
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
// Textarea Field
woocommerce_wp_textarea_input(
array(
'id' => 'product_notes',
'label' => __( 'Product Notes', 'woocommerce' ),
'placeholder' => 'Enter product notes here.',
'desc_tip' => 'true',
'description' => __( 'Enter product notes here.', 'woocommerce' )
)
);
echo '</div>';
}
// Save Product notes
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields_save( $post_id ){
// Textarea
$woocommerce_textarea = $_POST['product_notes'];
if( !empty( $woocommerce_textarea ) )
update_post_meta( $post_id, 'product_notes', esc_html( $woocommerce_textarea ) );
}
答案 0 :(得分:1)
好的,我找到了解决方案。
add_action( 'woocommerce_checkout_update_order_meta', 'custom_product_notes_order_meta', 10, 2 );
function custom_product_notes_order_meta( $order_id ) {
global $woocommerce;
$i=1; //product counter
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
$product_id = $cart_item['product_id'];
$product_note = 'product_notes_'.$i++;
if( !empty(get_post_meta( $product_id, 'product_notes', true )) ){
$product_notes = get_post_meta( $product_id, 'product_notes', true );
add_post_meta( $order_id, $product_note, $product_notes );
}
}
}