在Woocommerce 3中替换外部运输服务的付款方式标题

时间:2018-07-03 09:14:53

标签: php wordpress woocommerce shipping orders

我正在使用Woocommerce和外部运输服务。我有一个$parameter['pay']值,它的字符串值可以是“ Cash”或“ Terminal”。我想将这些字符串替换为数字:

  • “现金”加1
  • 带有2的“终端”。

这是我想要的实际代码:

add_action('woocommerce_thankyou', 'send_order_to_delivery');
function send_order_to_delivery( $order_id ){

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );

    $order_data = $order->get_data()

    $parameter['pay'] = $order_data['payment_method_title'];
}

因此$parameter['pay']应该是1或2。

我已经尝试过了:

add_action('woocommerce_thankyou', 'send_order_to_delivery');
function send_order_to_delivery( $order_id ){

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );

    $order_data = $order->get_data()

    $parameter['pay'] = $payment_method_code;

    $payment_method_code = $order_data['payment_method_title'];
    $cash = str_replace("Cash", "1", "$payment_method_code");
    $terminal = str_replace("Terminal", "2", "$payment_method_code");
}

但是会引发错误。

我如何使它起作用?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

首先,错误来自这两行:

$cash = str_replace("Cash", "1", "$payment_method_code");
$terminal = str_replace("Terminal", "2", "$payment_method_code");

他们应该从变量中删除"字符才能使用此字符:

$cash = str_replace("Cash", "1", $payment_method_code);
$terminal = str_replace("Terminal", "2", $payment_method_code);

它将解决您的错误问题。


现在,您可以使用WC_Order get_payment_method_title()方法尝试以下操作:

add_action('woocommerce_thankyou', 'send_order_to_delivery');
function send_order_to_delivery( $order_id ){

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );

    $pay = array("Cash" => 1, "Terminal" => 2); 

    $param['pay'] = $pay[$order->get_payment_method_title()];
}

它可以工作。