覆盖默认的woocommerce_get_cancel_order_url_raw

时间:2020-10-28 09:36:07

标签: php wordpress woocommerce

我首先要说的是,我根本不发展自己,但是我试图提出自己的解决方案。我试图覆盖woocommerce_get_cancel_order_url_raw的内容位于模板的functions.php文件的public_html / wp-content / plugins / woocommerce / includes / class-wc-order.php中,因此在更新插件时不会被覆盖。我希望能够定义一个url(在本例中为主页,但也许很重要的一点是要使用WPML来提及im,因此有多个lang,但是如果它太复杂了,则会根据用户地理位置)。我找到了此功能,但似乎无法正常工作,或者至少我无法使其正常工作:

add_filter( 'woocommerce_get_cancel_order_url_raw', 'paypal_canceled_redirect' );
function paypal_canceled_redirect(){
    wp_redirect(home_url()); // REDIRECT PATH
    exit;
}

谢谢 问候

2 个答案:

答案 0 :(得分:1)

woocommerce_get_cancel_order_url_raw过滤器的目的是以字符串形式修改该URL 。在那里直接调用wp_redirect是没有意义的。 (这是一个传递给外部支付网关服务的值,以便网关在取消该过程时可以将用户重定向到您的站点。)

您需要从该函数返回新的URL值。

/* Paypal cancel order redirect */
add_filter( 'woocommerce_get_cancel_order_url_raw', 'paypal_canceled_redirect' );
function paypal_canceled_redirect(){ 
  return home_url();
}

答案 1 :(得分:0)

感谢@CBroe,他为我指出了正确的方向,并且在很大程度上帮助了我实现该解决方案。这将是:

/* Paypal cancel order redirect */
    add_filter( 'woocommerce_get_cancel_order_url_raw', 'paypal_canceled_redirect' );
    function paypal_canceled_redirect(){ 
                           return home_url();
    }
相关问题