Ya vimos cómo Ocultar notas de pedido en el pago de WooCommerce página. Esta vez, sin embargo, nuestro objetivo es «moverlos», y eliminarlos específicamente de su posición predeterminada (en el formulario de envío) y agregarlos de nuevo bajo el formulario de facturación.
Como puede imaginar, este es un fragmento combinado: (1) Los eliminamos (y usamos el fragmento según el enlace de arriba) y (2) creamos un nuevo campo de facturación. Finalmente, (3) también necesitamos «guardar» este nuevo valor de campo en las notas de pedido originales Meta de campo personalizado.
Si esto es difícil de entender, no se preocupe, simplemente copie/pegue el fragmento en sus funciones.php y vea que la magia sucede. ¡Disfrutar!
Php Snippet: mueva las notas de pedido @ WooCommerce Checkout
/** * @snippet Move Order Notes @ WooCommerce Checkout * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @compatible WooCommerce 3.9 * @community https://businessbloomer.com/club/ */ // 1. Hide default notes add_filter( 'woocommerce_enable_order_notes_field', '__return_false' ); // 2. Create new billing field add_filter( 'woocommerce_checkout_fields' , 'bbloomer_custom_order_notes' ); function bbloomer_custom_order_notes( $fields ) { $fields['billing']['new_order_notes'] = array( 'type' => 'textarea', 'label' => 'New Order Notes', 'class' => array('form-row-wide'), 'clear' => true, 'priority' => 999, ); return $fields; } // 3. Save to existing order notes add_action( 'woocommerce_checkout_update_order_meta', 'bbloomer_custom_field_value_to_order_notes', 10, 2 ); function bbloomer_custom_field_value_to_order_notes( $order_id, $data ) { if ( ! is_object( $order_id ) ) { $order = wc_get_order( $order_id ); } $order->set_customer_note( isset( $data['new_order_notes'] ) ? $data['new_order_notes'] : '' ); wc_create_order_note( $order_id, $data['new_order_notes'], true, true ); $order->save(); }