从订单备注添加高级货件跟踪插件的跟踪详细信息

时间:2020-07-22 作者:Pasie15

我有一个woocomerce网站,该网站连接到UPS电子履行,当他们发货订单时,跟踪号最终会更新到订单注释中,如以下示例所示:

enter image description here

简单地说,UPS e-fulfillment正在连接到Woocomece api,并使用跟踪号更新订单注释。我正在尝试做的事情是记下这个订单,并将其设置为高级发货跟踪插件中的跟踪编号。

我对PHP了解不多,但我有一个想法,但我并不完全确定。下面是在wc order类中找到的add\\U order\\U note函数。php和函数ast\\u insert\\u tracking\\u number在tracking number中找到。AST插件的php。

enter image description hereenter image description here

我的想法是,从add\\u order\\u note函数调用ast\\u insert\\u tracking\\u number函数,但是我不能百分之百确定如何执行该操作。有什么建议吗?非常感谢你!

2 个回复
最合适的回答,由SO网友:hitesh patel 整理而成

在函数中添加此代码段。php并让我知道。

/*
* AST: get UPS Tracking number from order note
* 
*/
add_action( \'woocommerce_rest_insert_order_note\', \'action_woocommerce_rest_insert_order_note\', 10, 3 );
function action_woocommerce_rest_insert_order_note( $note, $request, $true ) {
    //check if AST is active
    if ( !function_exists( \'ast_insert_tracking_number\' ) ) return;
    
    //check if order note is for UPS
    if( strpos( $note->comment_content, \'1Z\' ) !== false ){
        
        $order_id = $request[\'order_id\'];
        $status_shipped = 1;
        $tracking_number = $note->comment_content;
        $tracking_provider = \'UPS\';
        
        ast_insert_tracking_number($order_id, $tracking_number, $tracking_provider, \'\', $status_shipped );
    }
}

SO网友:Jacob Peattie

这通常是离题的,但我最近碰巧做了一些非常类似的事情,所以我可以分享。我处理这件事的方式是wp_insert_comment (订单注释作为注释添加),检查注释是否为订单注释,并使用regex确定注释是否为跟踪号。如果是,则使用跟踪编号功能添加:

add_action(
    \'wp_insert_comment\',
    function( int $comment_id, WP_Comment $comment ) {
        /**
         * Only order notes will contain shipping information for a product.
         */
        if ( \'order_note\' !== $comment->comment_type ) {
            return;
        }

        /**
         * Match note contents to UPS tracking number format.
         * Regex taken from https://www.thetopsites.net/article/53619924.shtml
         */
        preg_match(
            \'/\\b(1Z ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3} ?[0-9A-Z]|[\\dT]\\d\\d\\d ?\\d\\d\\d\\d ?\\d\\d\\d)\\b/\',
            $comment->comment_content,
            $matches
        );

        /**
         * Abort if the note is not a UPS tracking number.
         */
        if ( empty( $matches ) ) {
            return;
        }

        /**
         * Add tracking details with details number extracted from order note.
         */
        if ( function_exists( \'ast_insert_tracking_number\' ) ) {
            ast_insert_tracking_number(
                $comment->comment_post_ID,
                $matches[0],
                \'UPS\',
                strtotime( $comment->comment_date_gmt ),
                1
            );
        }
    },
    10,
    2
);

相关推荐