How to check payment method on a WooCommerce order by id?

匆匆过客 提交于 2019-12-03 05:04:06

问题


I want to make some changes if the chosen payment method is COD. On existing WC_Order i have used

($order->payment_method_title == 'Cash On Delivery' ? ... : ... );

to retrieve the title. But i would like to check against the id (cod) because the title string gets translated to different languages which doesn't make it a good solution.

Is there a way to retrieve the id on a WC_Order in woocommerce?


回答1:


The post meta key for the payment method ID is simply _payment_method

So if $order->payment_method doesn't have the magic methods in place to get that automatically, you could retrieve the post meta using traditional WordPress

get_post_meta( $order->id, '_payment_method', true );

Update for WooCommerce 3.0

$order->get_payment_method();



回答2:


If you need the payment gateway object itself you can use the wc_get_payment_gateway_by_order function.

$payment_gateway = wc_get_payment_gateway_by_order( $order );



回答3:


2019 now, if you want the title of the payment method you can do:

$order = new WC_Order( $order_id );
$payment_title = $order->get_payment_method_title();

This returns the string set in the Woocommerce > Payment methods, ex: Paypal.

Cheers.



来源:https://stackoverflow.com/questions/26011837/how-to-check-payment-method-on-a-woocommerce-order-by-id

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!