Muy bien, este título puede no ayudarlo realmente a comprender lo que quiero decir, así que vamos a decirlo de otra manera. Cuando, como administrador, edita un pedido y está en la tabla de elementos de pedido, tiene la oportunidad de editar la cantidad de artículo, el precio subtotal y con descuento (Ver captura de pantalla a continuación).
Ahora, ¿qué pasa si también desea tener la libertad de mostrar y editar otro campo personalizado, para que se guarde dentro del pedido una vez que presione el botón «Guardar»?
Esto podría ser útil para configuraciones personalizadas; por ejemplo, imaginemos que el administrador tiene la necesidad de definir también la «cantidad enviada», para que sepan exactamente si un pedido específico se ha cumplido completamente o requiere un segundo envío para completarse.
De cualquier manera, vea la captura de pantalla a continuación, juegue con el fragmento y vea cómo va. ¡Disfrutar!
Php Snippet: Agregar columna personalizada a la tabla de elementos @ WooCommerce Editar Página de pedido
/** * @snippet Custom Order Items Column @ Admin * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @compatible WooCommerce 7 * @community https://businessbloomer.com/club/ */ add_action( 'woocommerce_admin_order_item_headers', 'bbloomer_admin_order_item_headers' ); function bbloomer_admin_order_item_headers( $order ) { echo 'Qty Shipped '; } add_action( 'woocommerce_admin_order_item_values', 'bbloomer_admin_order_item_values', 9999, 3 ); function bbloomer_admin_order_item_values( $product, $item, $item_id ) { if ( $product ) { $shipped = $item->get_meta( 'order_item_shipped' ) ? $item->get_meta( 'order_item_shipped' ) : 0; echo 'x ' . $shipped . ' '; } } add_action( 'woocommerce_before_save_order_item', 'bbloomer_change_qty_shipped', 9999 ); function bbloomer_change_qty_shipped( $item ) { if ( $item->get_type() !== 'line_item' ) return; if ( ! $_POST ) return; if ( isset( $_POST['items'] ) ) { // ITS AJAX SAVE parse_str( rawurldecode( $_POST['items'] ), $output ); } else { $output = $_POST; } $item->update_meta_data( 'order_item_shipped', $output['order_item_shipped'][$item->get_id()] ); }