El botón WooCommerce «Pedir nuevamente» se muestra para pedidos ‘completados’ en la página de agradecimiento y ver la página de pedidos. Eso es una pena, porque sería útil mostrarlo en la página My Cuenta> Ordenes también, como una «acción» personalizada, igual que la «Vista», «Paga» (si está pendiente), «Cancelar» (si la suscripción ), «Editar» (fragmento personalizado), «Confirmar» (fragmento personalizado) botones.
¡La buena noticia es que podemos codificarlo nosotros mismos! Y simplemente reutilice la mayor parte del código que ya escribimos, así como confíe en el «oyente» de WooCommerce para el botón existente «Orden Again». ¡Disfrutar!
Php Snippet: agregue el botón «Ordene nuevamente» a mi cuenta> Acción de pedidos (solo pedidos completados)
Si se pregunta cómo se me ocurrió el código ‘URL’ en el fragmento a continuación, simplemente reutilizé exactamente el mismo código del WooCommerce_order_Again_Button () función.
Además, en algún lugar de la clase de carrito, hay un «oyente» que se desencadena cuando se hace clic en el botón, ver get_cart_from_session () – Entonces, debido a que estoy usando la URL exacta del mismo botón, el oyente también se desencadena desde la posición del nuevo botón.
/** * @snippet Order Again @ My Account Orders * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @compatible WooCommerce 6 * @community https://businessbloomer.com/club/ */ add_filter( 'woocommerce_my_account_my_orders_actions', 'bbloomer_order_again_action', 9999, 2 ); function bbloomer_order_again_action( $actions, $order ) { if ( $order->has_status( 'completed' ) ) { $actions['order-again'] = array( 'url' => wp_nonce_url( add_query_arg( 'order_again', $order->get_id(), wc_get_cart_url() ), 'woocommerce-order_again' ), 'name' => __( 'Order again', 'woocommerce' ), ); } return $actions; }