You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce我的账户查看订单页面添加取消订单按钮?

在WooCommerce查看订单页面添加取消订单按钮的实现方法

完全可以在WooCommerce的「查看订单」页面插入取消订单按钮,下面是具体的实现方案,直接用代码就能搞定:

  • 利用WooCommerce自带的woocommerce_view_order_actions钩子,这个钩子专门用来在查看订单页面的操作区域添加自定义按钮。
  • 做状态过滤——只给「待付款」「处理中」这类允许取消的订单显示按钮,避免用户对已完成、已取消的订单执行无效操作。

把下面的代码添加到你的主题functions.php文件或者自定义插件中:

// 在查看订单页面添加取消订单按钮
add_filter( 'woocommerce_view_order_actions', 'add_cancel_order_button_on_view_order', 10, 2 );
function add_cancel_order_button_on_view_order( $actions, $order ) {
    // 判断订单是否处于可取消状态
    if ( $order->has_status( array('pending', 'processing') ) ) {
        // 添加取消订单按钮
        $actions['cancel_order'] = array(
            'url'  => wp_nonce_url( admin_url( 'admin-ajax.php?action=woocommerce_cancel_order&order_id=' . $order->get_id() ), 'woocommerce-cancel-order' ),
            'name' => __( '取消订单', 'woocommerce' )
        );
    }
    return $actions;
}

// 处理取消订单的AJAX请求
add_action( 'wp_ajax_woocommerce_cancel_order', 'handle_cancel_order_request' );
add_action( 'wp_ajax_nopriv_woocommerce_cancel_order', 'handle_cancel_order_request' );
function handle_cancel_order_request() {
    // 验证权限和nonce
    if ( ! isset( $_GET['order_id'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'woocommerce-cancel-order' ) ) {
        wp_die( __( '操作无效', 'woocommerce' ) );
    }

    $order_id = absint( $_GET['order_id'] );
    $order = wc_get_order( $order_id );

    // 再次验证订单状态和用户权限(确保是订单所属用户操作)
    if ( $order && $order->get_user_id() === get_current_user_id() && $order->has_status( array('pending', 'processing') ) ) {
        $order->update_status( 'cancelled', __( '用户主动取消订单', 'woocommerce' ) );
        wc_add_notice( __( '订单已成功取消', 'woocommerce' ), 'success' );
    } else {
        wc_add_notice( __( '无法取消该订单', 'woocommerce' ), 'error' );
    }

    // 跳转回查看订单页面
    wp_safe_redirect( wc_get_endpoint_url( 'view-order', $order_id, wc_get_page_permalink( 'myaccount' ) ) );
    exit;
}

代码说明:

  1. 钩子使用:woocommerce_view_order_actions会把按钮插入到订单操作区(比如「查看发票」按钮旁),不用手动修改模板文件。
  2. 安全校验:用wp_nonce_url生成带验证的链接,同时校验当前用户是否为订单所有者,防止恶意操作。
  3. 状态控制:通过has_status限定可取消的订单状态,避免误操作;取消后自动更新订单状态并添加操作备注。
  4. 反馈提示:操作完成后跳转回订单页面,并显示成功/失败的提示信息,提升用户体验。

内容的提问来源于stack exchange,提问作者Carl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:22:34