Мне нужно добавить пользовательскую функцию для публикации данных в процессе оформления заказа в woocommerce - PullRequest
0 голосов
/ 11 ноября 2019

Владелец сайта woocommerce / wordpress попросил меня добавить функцию в процесс оформления заказа, который запускается, когда пользователь нажимает кнопку «разместить заказ», но я не совсем уверен, как получить эту функциюуйти, как только заказ размещен. Причина их запроса заключается в том, что этот конкретный клиент хочет, чтобы его поставщик автоматически уведомлялся о любых заказах, а также их персонал.

То, что функция делает (или должна делать), берет информацию из формы проверки и передает ее в SOAP API, используемый системой поставщика.

Вот код:

<?php

$request = new HttpRequest();
$request->setUrl($PRIVATE);
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
  'Postman-Token' => $private_key,
  'cache-control' => 'no-cache',
  'SOAPAction' => $private_url,
  'Content-Type' => 'text/xml'
));

$request->setBody('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   //This part doesn't actually matter - is specific to the supplier's system and I've removed it for privacy.
   </soapenv:Body>
</soapenv:Envelope>');

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
?>

Основная проблема заключается в том, что нет промежуточного сайта (и у меня нет возможности его создать), поэтому мне нужно реализовать это на живом сайте, и я не уверенчто это не нарушит процесс оформления заказа или сайт в целом, если я попытаюсь использовать это. К сожалению, я не нашел много материала, детализирующего, как другие обрабатывали подобные реализации в моем поиске - большая часть того, что я вижу, это «использовать плагин, который не решит вашу проблему», или что-то в этом роде.

Тем не менее, мне действительно нужно понять, что происходит, чтобы я мог вернуть этот проект в руки клиента. Заранее спасибо за ваше время и помощь!

1 Ответ

1 голос
/ 11 ноября 2019

Я делал подобные реализации в прошлом. Я добавляю его в хук woocommerce_thankyou.

add_action('woocommerce_thankyou', 'send_order');

function send_order($order_id){
    $order = wc_get_order( $order_id );

    /*** Your code ***/

}
...