Un pedido puede ser marcado como «completado» solo por el gerente de la tienda de WooCommerce, manualmente. En ciertos casos, esta operación puede ser automática, es decir, pedidos descargables.
Sin embargo, ¿qué pasa si queremos que nuestros clientes completen (confirmar) su orden de procesamiento? Bueno, esto es bastante fácil: mostramos un botón «Confirmar pedido» en mi cuenta> Pedidos, y al hacer clic en un clic, algún código desencadena el cambio de estado. ¡Disfrutar!
Php Snippet: el botón «Confirmar pedido» @ mi cuenta> Pedidos
/** * @snippet Confirm Order Button | WooCommerce My Account * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @testedwith WooCommerce 6 * @community https://businessbloomer.com/club/ */ add_filter( 'woocommerce_my_account_my_orders_actions', 'bbloomer_confirm_order_my_account_orders_actions', 9999, 2 ); function bbloomer_confirm_order_my_account_orders_actions( $actions, $order ) { if ( $order->has_status( 'processing' ) ) { $actions['confirm-order'] = array( 'url' => wp_nonce_url( add_query_arg( array( 'confirm_order' => $order->get_id() ) ), 'woocommerce-confirm-order' ), 'name' => __( 'Confirm Order', 'woocommerce' ) ); } return $actions; } add_action( 'template_redirect', 'bbloomer_on_confirm_order_click_complete_order' ); function bbloomer_on_confirm_order_click_complete_order( $order_id ) { if ( isset( $_GET['confirm_order'], $_GET['_wpnonce'] ) && is_user_logged_in() && wp_verify_nonce( wp_unslash( $_GET['_wpnonce'] ), 'woocommerce-confirm-order' ) ) { $order = wc_get_order( $_GET['confirm_order'] ); $order->update_status( 'completed', 'Order confirmed by customer' ); } }