我正在使用woocommerce处理我的wordpress上的订单 我正在使用自定义支付网关插件。一切都很完美,除了我想修改感谢页面,告诉客户订单已成功注册。 流程支付功能:
public function process_payment( $order_id ) {
global $woocommerce;
$order = new WC_Order( $order_id );
// Mark as on-hold (we're awaiting the cheque)
$order->update_status('on-hold', __( 'Awaiting payment', 'woocommerce-other-payment-gateway' ));
// Reduce stock levels
$order->reduce_order_stock();
if(isset($_POST[ $this->id.'-admin-note']) && trim($_POST[ $this->id.'-admin-note'])!=''){
$order->add_order_note(esc_html($_POST[ $this->id.'-admin-note']),1);
}
// Remove cart
$woocommerce->cart->empty_cart();
// Return thankyou redirect
return array(
'result' => 'success',
'redirect' => $this->get_return_url( $order )
);
}
我希望当用户看到感谢页面时,他会自动重定向到它。
我不想更改数组上的重定向网址,如:
'redirect' => 'http://example.com/'
我想在他看到页面后重定向他,我怎么能设法做到这一点?
提前感谢。
答案 0 :(得分:0)
您可以将一些js代码重定向到您的自定义成功页面,如下所示:
<script>
setTimeout(function(){
//redirect after 3 seconds
window.location.href= 'your_custom_url';
}, 3000);
</script>
您需要在默认的感谢页面上编写此代码。
答案 1 :(得分:0)
如果您只想告诉客户订单已成功注册,则有两种方法可以实现。
您可以挂钩默认的WooCommerce感谢页面。例子
add_action( 'woocommerce_thankyou', 'anycustomfunc', 4 );
// OR (better way)
// add_action( 'woocommerce_thankyou_{PAYMENT GATEWAY SLUG}', 'anycustomfunc', 4 );
function anycustomfunc( $order_id ) {
echo 'Your order has been successfully registered!';
}
使用特定的支付网关将客户重定向到一个完全不同的页面。
add_action( 'template_redirect', 'redirect_to_thankyou' );
function redirect_to_thankyou(){
if( !is_wc_endpoint_url( 'order-received' ) ) {
return;
}
// $o is an order object
$o = wc_get_order( wc_get_order_id_by_order_key( $_GET['key'] ) );
if( 'the payment method slug here' == $o->get_payment_method() ) {
wp_redirect( 'any custom url' );
exit;
}
}
您可以在WooCommerce设置中找到付款网关。我从本教程https://rudrastyh.com/woocommerce/thank-you-page.html
中获得的两个示例