Замените название метода оплаты для внешней службы доставки в Woocommerce 3 - PullRequest
0 голосов

Я использую 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 голосов
/ 03 июля 2018

Сначала ошибка возникает из этих двух строк:

$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()];
}

Это может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...