有没有办法在 woocommerce 的页面浏览顺序中插入按钮或链接来取消订单?我已经看到了一些解决方案,但取消按钮始终位于我的帐户订单列表中,插件 WooCommerce Order Cancel for Customers 是一个可能的解决方案,但它仅适用于 WooCommerce 订单状态,不适用于我正在使用的自定义订单状态。
已更新
您可以使用这些简单的功能,在其中设置所需的订单状态(在这两个功能上),在“我的帐户订单视图”页面上显示取消订单按钮:
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;
}