Thêm nút “Mua lại” của WooCommerce hiển thị cho các đơn hàng ‘đã hoàn thành’ trên trang Cảm ơn và trang Xem đơn hàng. Sẽ rất hữu ích nếu hiển thị nó trên trang Tài khoản của tôi > Đơn đặt hàng, dưới dạng một “hành động” tùy chỉnh, giống như “Xem”, “Thanh toán” (nếu đang chờ xử lý), “Hủy” (nếu đăng ký ), nút “Chỉnh sửa” ( custom snippet ), “Xác nhận” ( custom snippet ).
Tin tốt là chúng ta có thể tự viết mã! Và chỉ cần sử dụng lại hầu hết mã mà chúng tôi đã viết, cũng như dựa vào “listener” WooCommerce cho nút “Đặt hàng lại” hiện có.
Đoạn mã PHP: Thêm nút “Đặt hàng lại” vào Tài khoản của tôi > Hành động đặt hàng (Chỉ những đơn hàng đã hoàn thành)
Nếu bạn đang thắc mắc làm thế nào tôi nghĩ ra mã ‘url’ trong đoạn trích bên dưới, thì tôi chỉ cần sử dụng lại chính mã đó của hàm woocommerce_order_again_button() .
Ngoài ra, ở đâu đó trong lớp Giỏ hàng, có một “trình nghe” kích hoạt khi nhấp vào nút – xem get_cart_from_session() – vì vậy vì tôi đang sử dụng cùng một URL của nút nên trình nghe cũng kích hoạt từ vị trí nút mới.
/**
* @snippet Order Again @ My Account Orders
* @how-to Get Tss247.vn FREE
* @author Michael Hoàng
* @compatible WooCommerce 6
* @donate me
*/
add_filter( 'woocommerce_my_account_my_orders_actions', 'tss_order_again_action', 9999, 2 );
function tss_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' => __( 'Mua lại', 'woocommerce' ),
);
}
return $actions;
}