PHP 从 WCFM 订单元中获取数据,并将其推送到 AST 插件中

发布于 2025-01-12 11:25:33 字数 2912 浏览 0 评论 0原文

虽然我对 php 非常绝望,但我觉得我已经接近这个了,我只是无法完全锁定它

所以我们在这里混合了 2 个插件 WCFM 和 WCFM 。 AST

在 WCFM 中,供应商添加跟踪号码和承运商,这存储在订单元数据中,元键为 wcfm_tracking_code 和 wcfm_tracking_url

我在其他地方发现了这个钩子,一旦跟踪提交到系统中,我就可以触发一系列要发生的事情,

“wcfm_after_order_mark_shipped” (Parameters -> $order_id, $order_item_id, $tracking_code, $tracking_url)

所以现在我想获取上述 2 个订单元数据并将它们推送到另一个名为 AST 的插件中 他们提供的将数据推送到系统的代码是:

<?php if ( class_exists( 'WC_Advanced_Shipment_Tracking_Actions' ) ) {

$order_id = '123'; //Replace with your order id
$tracking_provider = 'USPS'; //Replace with your shipping provider
$tracking_number = '123123'; //Replace with your tracking number
$date_shipped = '2020-06-22'; ////Replace with your shipped date
$status_shipped = 1; // 0=no,1=shipped,2=partial shipped(if partial shipped order status is enabled)
$sku = 't-shirt,blue-jeans'; //the line item (product) SKU
$qty = '1,1'; //the line item (product) quantity

if ( function_exists( 'ast_insert_tracking_number' ) ) {
    ast_insert_tracking_number( $order_id, $tracking_number, $tracking_provider, $date_shipped, $status_shipped, $sku, $qty );
}

}

所以使用提供的这两个代码,任何人都可以向我展示如何从 WCFM 获取元数据输入并将其推送到 AST 中吗?

我雇了一个人来做upwork,他们甚至不明白,但这看起来很简单。

这是我们的代码,它将数据推入,但看起来像这样

在此处输入图像描述

而不是这样,应该

在此处输入图像描述

add_action( 'wcfm_after_order_mark_shipped', 'testwr', 99, 6 );
function testwr( $order_id, $order_item_id, $tracking_code, $tracking_url, $product_id, $wcfm_tracking_data ) {
    $order = wc_get_order( $order_id );
    $data['order_id'] = $order_id;
    $data['tracking_provider'] = $tracking_url; 
    $data['wcfm_tracking_code'] = $wcfm_tracking_data['wcfm_tracking_code'];
    $data['date_shipped'] = $order->order_date;
    $data['status_shipped'] = 1;
    extract($data);
    foreach ($order->get_items() as $item) {
        $product = wc_get_product($item->get_product_id());
        $item_quantity[] = $item->get_quantity();
        $item_sku[] = $product->get_sku();
    }
    if( $item_sku ) {
        $data['sku'] = implode( ",",$item_sku );
    }
    $tracking_url = $tracking_url . "/" . $tracking_code;
    $url = "<a href='".$tracking_url."'>test</a>";
    $data['qty'] = implode( ",",$item_quantity );
    $test = ast_insert_tracking_number( $order_id, $tracking_url, $tracking_url, $date_shipped, $status_shipped, $sku, $qty);
    var_dump($test);
    print_r($tracking_code);
    print_r($data);
    print_r($wcfm_tracking_data);
    var_dump($order_item_id);
    //ast_insert_tracking_number
    die();
}

感谢任何愿意尝试此操作的人以及一些人时间

问候

While im pretty hopeless at php, i feel like im getting close on this one, i just cant quite lock it in

So we have 2 plugins in the mix here WCFM & AST

In WCFM, a vendor adds a tracking number and carrier this is store in the order meta data with a meta keys of
wcfm_tracking_code
AND
wcfm_tracking_url

i found this hook elesewhere that allows me to fire a set of things to happen, once the tracking has been submitted into the system

“wcfm_after_order_mark_shipped” (Parameters -> $order_id, $order_item_id, $tracking_code, $tracking_url)

so now i want to take the above 2 order meta datas and push them into another plugin called AST
They code they provide to push data into thier system is:

<?php if ( class_exists( 'WC_Advanced_Shipment_Tracking_Actions' ) ) {

$order_id = '123'; //Replace with your order id
$tracking_provider = 'USPS'; //Replace with your shipping provider
$tracking_number = '123123'; //Replace with your tracking number
$date_shipped = '2020-06-22'; ////Replace with your shipped date
$status_shipped = 1; // 0=no,1=shipped,2=partial shipped(if partial shipped order status is enabled)
$sku = 't-shirt,blue-jeans'; //the line item (product) SKU
$qty = '1,1'; //the line item (product) quantity

if ( function_exists( 'ast_insert_tracking_number' ) ) {
    ast_insert_tracking_number( $order_id, $tracking_number, $tracking_provider, $date_shipped, $status_shipped, $sku, $qty );
}

}

SO using both codes provided, can anyone show me how i can take the metadata input from WCFM and push it into AST?

Ive hired someone on upwork, and they cant even figure it out, but it seems so straightforward.

This is the code we have,it pushes the data in but it comes in looking like this

enter image description here

Instead of this like it should

enter image description here

add_action( 'wcfm_after_order_mark_shipped', 'testwr', 99, 6 );
function testwr( $order_id, $order_item_id, $tracking_code, $tracking_url, $product_id, $wcfm_tracking_data ) {
    $order = wc_get_order( $order_id );
    $data['order_id'] = $order_id;
    $data['tracking_provider'] = $tracking_url; 
    $data['wcfm_tracking_code'] = $wcfm_tracking_data['wcfm_tracking_code'];
    $data['date_shipped'] = $order->order_date;
    $data['status_shipped'] = 1;
    extract($data);
    foreach ($order->get_items() as $item) {
        $product = wc_get_product($item->get_product_id());
        $item_quantity[] = $item->get_quantity();
        $item_sku[] = $product->get_sku();
    }
    if( $item_sku ) {
        $data['sku'] = implode( ",",$item_sku );
    }
    $tracking_url = $tracking_url . "/" . $tracking_code;
    $url = "<a href='".$tracking_url."'>test</a>";
    $data['qty'] = implode( ",",$item_quantity );
    $test = ast_insert_tracking_number( $order_id, $tracking_url, $tracking_url, $date_shipped, $status_shipped, $sku, $qty);
    var_dump($test);
    print_r($tracking_code);
    print_r($data);
    print_r($wcfm_tracking_data);
    var_dump($order_item_id);
    //ast_insert_tracking_number
    die();
}

Kudos to anyone willing to give this a try and some time

Regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文