【问题标题】:API tracking code integration in front-end orderdetails (Woocommerce)前端订单详情中的 API 跟踪代码集成 (Woocommerce)
【发布时间】:2020-04-02 21:45:08
【问题描述】:

我有一家 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 sql wordpress woocommerce


    【解决方案1】:

    我找到了解决办法:

    在 order-details-item.php 中添加如下代码

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

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

    我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2016-03-06
      • 1970-01-01
      • 2019-03-17
      • 2017-06-10
      • 2017-09-12
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多