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