前端订单详情中的API跟踪代码集成(Woocommerce)



我有一个woocommerce商店,有一个带有API的第三方物流公司。通过此API,我将收到已发货订单的跟踪代码。我有一个用于通过API获取跟踪代码的php文件。有谁知道我如何使用此文件将此跟踪代码添加到订单详细信息部分中的客户前端帐户。(跟踪代码已出现在管理面板的订单详细信息中(。 代码为:

// print_r($order_ids);die;
$tracking_header = array('Content-Type:application/x-www-form-urlencoded', 'apikey:' . API_KEY,);
$tracking_url = "http://";
$tracking = _curlRequest($tracking_url, "POST", json_encode($order_ids), $tracking_header);
$tracking = json_decode($tracking, true);
if ( empty($tracking['data']) || $tracking['code'] == 4  ) {
echo json_encode(array("code" => 4, "msg" => "There are no orders to sync!", "data" => null));return;
} elseif ($tracking['code']) {
echo json_encode(array("code" => 5, "msg" => "There was an error getting the order information!", "data" => null));return;
}
// print_r($tracking);die;
$error = "";
foreach($tracking['data'] as $k=>$v){
$info = json_decode($v['info'],true);
$order_id = $v['order_id'];
if(empty($info)){
continue;
}
if(PREFIX !== 'your prefix' && PREFIX !== ''){
$order_id = substr($order_id,strlen(PREFIX));
}
$sql = "SELECT pm.meta_value as sku FROM {$db_prefix}postmeta as pm WHERE pm.meta_key='_sku' AND pm.post_id in (SELECT oim.meta_value FROM {$db_prefix}woocommerce_order_itemmeta as oim LEFT JOIN {$db_prefix}woocommerce_order_items as oi ON (oi.order_item_id = oim.order_item_id AND (oim.meta_key='_product_id' OR oim.meta_key='_variation_id')) WHERE oi.order_item_type='line_item' AND oi.order_id ={$order_id})";
$order_sku = $wpdb->get_results($sql,ARRAY_A);
if(!empty($order_sku)){
$new_sku = array();
foreach($order_sku as $val){
if(!empty($val['sku'])){
$new_sku[] = $val['sku'];
}
}
$sync_sku = array();
foreach($info as $ik=>$iv){
if($iv['sku']&& in_array($iv['sku'],$new_sku)){
$sync_sku[] = $iv['sku'];
}
}
if(!empty($sync_sku)){
if($v['shipping_method']){
if(!$wpdb->get_row("SELECT * FROM {$db_prefix}woocommerce_order_items WHERE order_id={$order_id} AND order_item_type='shipping' ", ARRAY_A)){
$data = array(
'order_item_name'=>$v['shipping_method'],
'order_item_type'=>'shipping',
'order_id'=>$order_id
);
$wpdb->insert("{$db_prefix}woocommerce_order_items",$data);
}
}
if($v['tracking_number']){
$order_items = $wpdb->get_row("SELECT * FROM {$db_prefix}woocommerce_order_items WHERE order_id={$order_id} AND order_item_type='shipping' ", ARRAY_A);
if($order_items && !$wpdb->get_row("SELECT * FROM {$db_prefix}woocommerce_order_itemmeta WHERE order_item_id={$order_items['order_item_id']} AND meta_key='tracking_number' ", ARRAY_A)){
$data = array(
'order_item_id'=>$order_items['order_item_id'],
'meta_key'=>'tracking_number',
'meta_value'=>$v['tracking_number']
);
if(!$wpdb->insert("{$db_prefix}woocommerce_order_itemmeta",$data)){
$error .= $v['order_id'].",";
}
}
}
}else{
$error .= $v['order_id'].",";
}
}    
} 
if($error){
$errorders = substr($error,0,-1);
echo json_encode(array("code" => 6, "msg" => "Can synchronize but synchronize failed orders:{$errorders}", "data" => null));return;
}
echo json_encode(array("code" => 0, "msg" => "Success", "data" => null));return;

我找到了解决方案:

在订单详情项中添加以下代码.php

foreach( $order->get_items('shipping') as $item ){
echo $item->get_meta('tracking_number');
}

但是现在我有一个问题,如何使这个tracking_number包装在URL中? 以以下方式,URL 包含 https://someaddres&=tracking_number

我解决了这个问题。

最新更新