Cách thêm điểm cuối mới trong thương mại điện tử


7

Tôi đang sử dụng thương mại điện tử cho một trang web và nơi khách hàng bán phần mềm. Một trong những tùy chọn tôi phải thêm là yêu cầu nút cấp phép trên trang tài khoản của tôi.

Tôi đã có chức năng thực hiện điều này trong tệp request-License.php trong thư mục thương mại điện tử trong chủ đề của mình nhưng tôi gặp vấn đề khi thêm điểm mới.

nhập mô tả hình ảnh ở đây

khi bạn bấm vào xem điểm cuối gọi tập tin view-order.php để tôi muốn gọi giấy phép yêu cầu khi nhấp vào nút giấy phép yêu cầu.

đây là cách gọi

 <?php
    $actions = array();

    if ( in_array( $order->get_status(), apply_filters( 'woocommerce_valid_order_statuses_for_payment', array( 'pending', 'failed' ), $order ) ) ) {
            $actions['pay'] = array(
            'url'  => $order->get_checkout_payment_url(),
            'name' => __( 'Pay', 'woocommerce' )
        );
    }

    if ( in_array( $order->get_status(), apply_filters( 'woocommerce_valid_order_statuses_for_cancel', array( 'pending', 'failed' ), $order ) ) ) {
        $actions['cancel'] = array(
            'url'  => $order->get_cancel_order_url( wc_get_page_permalink( 'myaccount' ) ),
            'name' => __( 'Cancel', 'woocommerce' )
        );
    }

    $actions['license'] = array(
        'url'  => $order->get_request_license_url(),
        'name' => __( 'Request License', 'woocommerce' )
    );

    $actions['view'] = array(
        'url'  => $order->get_view_order_url(),
        'name' => __( 'View', 'woocommerce' )
    );

    $actions = apply_filters( 'woocommerce_my_account_my_orders_actions', $actions, $order );

    if ( $actions ) {
        foreach ( $actions as $key => $action ) {
            echo '<a href="' . esc_url( $action['url'] ) . '" class="button ' . sanitize_html_class( $key ) . '">' . esc_html( $action['name'] ) . '</a>';
        }
    }
?>

Tôi biết tôi phải tạo hàm get numquest_license_url () nhưng không biết cách triển khai. Hy vọng tôi có thể có một số trợ giúp ở đây


Bạn có thể nhận được câu trả lời của bạn từ liên kết này. github.com/wooc Commerce / wooc Commerce / wiki / Google
vijay

Câu trả lời:


6

dường như thương mại điện tử không có bất kỳ bộ lọc nào khi đăng ký điểm cuối của họ, https://github.com/wootheme/wooc Commerce / blob / master / includes / class-wc-query.php # L84

vì vậy bạn cần thêm điểm cuối mới của mình vào init hook, giống như thế này

add_action( 'init', 'add_endpoint' );
function add_endpoint(){
    add_rewrite_endpoint( 'license', EP_ROOT | EP_PAGES );
}

sau đó bạn phải thực hiện một số bộ lọc wc_get_templateđể gọi các tệp của mình khi yêu cầu khớp với điểm cuối của bạn

add_filter( 'wc_get_template', 'custom_endpoint', 10, 5 );
function custom_endpoint($located, $template_name, $args, $template_path, $default_path){

    if( $template_name == 'myaccount/my-account.php' ){
        global $wp_query;
        if(isset($wp_query->query['license'])){
            $located = get_template_directory() . '/your-path-to-file.php';
        }
    }

    return $located;
}

vì vậy, khi bạn truy cập trang tài khoản của tôi với điểm cuối license, giả sử http://yourdomain.com/my-account/license/, nó sẽ hiển thị mã tùy chỉnh của bạn


Không chắc chắn từ phiên bản nào, nhưng WooC Commerce không có bộ lọc để sửa đổi các vars truy vấn: github.com/wooc
Marian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.