向 WooCommerce 我的帐户查看订单页面添加取消订单按钮

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

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

woocommerce hook-woocommerce
1个回答
1
投票

已更新

您可以使用这些简单的功能,在其中设置所需的订单状态(在这两个功能上),在“我的帐户订单视图”页面上显示取消订单按钮:

add_action( 'woocommerce_order_details_after_order_table', 'custom_order_cancel_button' );
function custom_order_cancel_button( $order ) {
    $statuses = array( 'pending', 'on-hold', 'processing', 'completed' ); // Define order statuses

    if ( is_wc_endpoint_url('view-order') && $order->has_status($statuses) ) {
        printf('<div style="clear:both;margin-bottom:24px;"><a href="%s" class="woocommerce-button cancel button">%s</a></div>',
            $order->get_cancel_order_url( wc_get_endpoint_url('view-order', $order->get_id() ) ),
            __( 'Cancel', '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_wc_endpoint_url('orders') ) {
        $statuses = array( 'pending', 'on-hold', 'processing', 'completed' ); // Define order statuses
    }
    return $statuses;
}

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


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

add_filter( 'woocommerce_valid_order_statuses_for_cancel', 'filter_valid_order_statuses_for_cancel' );
function filter_valid_order_statuses_for_cancel( $statuses ){
    $statuses = array( 'pending', 'on-hold', 'processing', 'completed' ); // Define order statuses
    return $statuses;
}

相关:Woocommerce 中我的帐户订单列表上的有条件取消按钮

© www.soinside.com 2019 - 2024. All rights reserved.