查看订单页面取消订单按钮

问题描述 投票:0回答:1

有没有办法在 woocommerce 的页面浏览顺序中插入按钮或链接来取消订单?我已经看到了一些解决方案,但取消按钮始终位于我的帐户订单列表中,插件 WooCommerce Order Cancel for Customers 是一个可能的解决方案,但它仅适用于 WooCommerce 订单状态,不适用于我正在使用的自定义订单状态。

woocommerce hook-woocommerce
1个回答
0
投票

根据 Woocommerce 中我的帐户订单列表中的有条件取消按钮答案,您可以使用以下内容,您将在第一个功能中设置取消订单按钮所需的订单状态。

add_filter( 'woocommerce_valid_order_statuses_for_cancel', 'filter_valid_order_statuses_for_cancel' );
function filter_valid_order_statuses_for_cancel( $statuses ){
    if ( ! ( is_account_page() && is_wc_endpoint_url('view-order') ) ) {
        return $statuses;
    }
    // Set HERE the order statuses where you want the cancel button to appear
    $statuses = array( 'pending', 'on-hold', 'processing', 'completed' );
    return $statuses;
}

add_action( 'woocommerce_order_details_after_order_table', 'custom_order_cancel_button' );
function custom_order_cancel_button( $order ) {
    if ( ! ( is_account_page() && is_wc_endpoint_url('view-order') ) ) {
        return;
    }
    $actions = wc_get_account_orders_actions( $order );

    if ( isset($actions['cancel']) && ! empty($actions['cancel']) ) {
        $action = $actions['cancel'];
        echo '<a href="' . esc_url($action['url']) . '" class="woocommerce-button cancel button">' . esc_html($action['name']) . '</a>';
    }
}

代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。

如果您希望此取消按钮也出现在“我的帐户订单”列表中,请替换这两个功能:

    if ( ! ( is_account_page() && is_wc_endpoint_url('view-order') ) ) {

与:

    if ( ! is_account_page() ) {
© www.soinside.com 2019 - 2024. All rights reserved.