From d11b0e857de6b50553a64ad798b28eb2b2876984 Mon Sep 17 00:00:00 2001 From: justinstern Date: Tue, 11 Mar 2014 00:04:49 -0400 Subject: [PATCH] Don't trailingslash Order Cancel URLs with a Query String With non-pretty permalinks enabled, this was producing a URI like http://example.com/?page_id=7/ That final unnecessary trailing slash messes up some redirect gateways that are passed the cancel URL --- includes/class-wc-order.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/includes/class-wc-order.php b/includes/class-wc-order.php index 260d6c59f5b..fd654430381 100644 --- a/includes/class-wc-order.php +++ b/includes/class-wc-order.php @@ -1105,7 +1105,13 @@ class WC_Order { */ public function get_cancel_order_url( $redirect = '' ) { $cancel_endpoint = get_permalink( wc_get_page_id( 'cart' ) ); - $cancel_endpoint = trailingslashit( $cancel_endpoint ? $cancel_endpoint : home_url() ); + if ( ! $cancel_endpoint ) { + $cancel_endpoint = home_url(); + } + + if ( false === strpos( $cancel_endpoint, '?' ) ) { + $cancel_endpoint = trailingslashit( $cancel_endpoint ); + } return apply_filters('woocommerce_get_cancel_order_url', wp_nonce_url( add_query_arg( array( 'cancel_order' => 'true', 'order' => $this->order_key, 'order_id' => $this->id, 'redirect' => $redirect ), $cancel_endpoint ), 'woocommerce-cancel_order' ) ); }