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ó. 

Giờ đây, các đơn hàng đã hoàn thành sẽ nhận được nút “Đặt hàng lại” tùy chỉnh trong Tài khoản của tôi > Đơn hàng. Khi nhấp chuột, Giỏ hàng sẽ được lấp đầy với các sản phẩm tương tự theo thứ tự ban đầu.
Giờ đây, các đơn hàng đã hoàn thành sẽ nhận được nút “mua lại” tùy chỉnh trong Tài khoản của tôi > Đơn hàng. 
Khi nhấp chuột, các sản phẩm theo đơn đặt hàng ban đầu sẽ được thêm vào giỏ hàng.

Đ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;
}
Đã thêm item vào giỏ hàng.
0 item -