我首先要说的是,我根本不发展自己,但是我试图提出自己的解决方案。我试图覆盖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;
}
谢谢 问候
答案 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();
}