Woocommerce付款自定义谢谢页面

时间:2017-04-27 12:48:06

标签: php wordpress woocommerce

我正在使用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/'

我想在他看到页面后重定向他,我怎么能设法做到这一点?

提前感谢。

2 个答案:

答案 0 :(得分:0)

您可以将一些js代码重定向到您的自定义成功页面,如下所示:

<script>

setTimeout(function(){ 
   //redirect after 3 seconds
    window.location.href= 'your_custom_url';

}, 3000);

</script>

您需要在默认的感谢页面上编写此代码。

答案 1 :(得分:0)

如果您只想告诉客户订单已成功注册,则有两种方法可以实现。

选项1

您可以挂钩默认的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!';

}

选项2

使用特定的支付网关将客户重定向到一个完全不同的页面。

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

中获得的两个示例