[英]How to append order number to a URL on the “Thank You”-page in WooCommerce
[英]How to redirect to thank you page after woocommerce checkout order processed
我正在嘗試在處理訂單后將訂單狀態更改為“已完成”並跳過付款頁面(轉到感謝頁面)。
到目前為止,我設法將訂單狀態更改為已完成,但我沒有將我重定向到感謝頁面,而是被重定向到付款頁面,並出現以下錯誤:
這是我使用的代碼:
add_filter( 'woocommerce_checkout_order_processed' , 'skip_join_payment' );
function skip_join_payment( $order_id ) {
if ( ! $order_id ) {
return;
}
if( $_COOKIE['isjoinForFree'] == "yes" ){
$order = wc_get_order( $order_id );
$order->update_status( 'completed' );
** i tried to redirect here but getting error on checkout page **
// if ( $order->has_status( 'completed' ) ) {
// header("Location: /jtnx/");
// die();
// }
}
}
另外我嘗試添加另一個帶重定向的鈎子:
add_action( 'woocommerce_payment_complete', 'skiped_join_payment_redirect', 1 );
function skiped_join_payment_redirect ( $order_id ){
$order = wc_get_order( $order_id );
if( $_COOKIE['isjoinForFree'] == "yes" ){
$order = wc_get_order( $order_id );
if ( $order->has_status( 'completed' ) ) {
header("Location: /jtnx/");
die();
}
}
}
如果有人遇到此錯誤,那是我的解決方法。 重定向失敗的原因是結帳 ajax 仍在運行,我將此代碼添加到我的 function.php 中,效果很好。
add_action( 'template_redirect', 'joined_for_free_redirect_to_thankyou' );
function joined_for_free_redirect_to_thankyou(){
if( !is_wc_endpoint_url( 'order-pay' )) {
return;
}
global $wp;
$order_id = intval( str_replace( 'join/order-pay/', '', $wp->request ) );
$order = wc_get_order( $order_id );
if ( $order->has_status( 'completed' ) && $_COOKIE['isjoinForFree'] == "yes" ) {
wp_redirect( site_url() . '/jtnx/' );
exit;
}
}
如果有人認為他有更好的方法來修復它,我仍然會很高興聽到:)
嘗試以下步驟:
header
中使用絕對的完整目標頁面地址,如header('Location: http://www.example.com/');
. 原因見header 。if( $_COOKIE['isjoinForFree'] == "yes" ) {
為真。else {
部分if( $_COOKIE['isjoinForFree'] == "yes" ) {
循環
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.