Woocommerce 从 item_id 之一获取 order_id?

标签 woocommerce edit orders items

我尝试从订单项 ID 之一获取相关订单(订单 ID)。

以一个案例为例: 编辑订单和删除订单项(由 Ajax 完成)时,Woocommerce 仅提供 Hook "woocommerce_before_delete_order_item" 并仅传递 $item_id。 (woo 函数执行 sql 而不是 WP 环境)。我需要“所属”订单 ID 才能执行某些操作!

到目前为止,我的解决方案是循环遍历所有订单并比较商品 ID,并在匹配发生时中断并返回订单 ID。

当当前商店中保持 10000 个订单及更多订单时,这是一种缓慢或“笨拙”的方式。

这不起作用:

wp_get_post_parent_id ( $item_id )

但我希望有类似的调用,或者我是否需要进行数据库 SQL 搜索?任何涉及 mySQL 的答案,请使其“复制并粘贴就绪”。我很擅长 PHP,但不会处理或从不编写自己的 SQL。

感谢您的帮助!以下是我迄今为止的解决方案:

$order_id = my_wc_get_order_from_item_id($item_id);

function my_wc_get_order_from_item_id($id) {

    $orders = get_posts('post_type=shop_order&numberposts=-1&post_status=publish');
    foreach($orders as $obj) {
        $order = new WC_Order($obj->ID);
        if ( count( $order->get_items('line_item') ) > 0 ) { 
            foreach($order->get_items('line_item') as $item_id => $item ) {
                if($item_id == $id) $return_value = $obj->ID;
                if(isset($return_value)) break;
            }
        }
        unset($order);
        if(isset($return_value)) break;
    }

    if(isset($return_value)) return $return_value;
        else return 0;
}

最佳答案

您的方法不起作用,因为订单项不是 wp_posts 表中的帖子,因此它们不能有 post_parent

但是,一切并没有丢失,而且考虑到我的 SQL 不是那么强大,这比我预期的要容易。查看数据库中的 woocommerce_order_item 表,您可以看到 order_idorder_item_id 都在那里:woocommerce_order_item table

因此,我从 WooCommerce 借用了一些 SQL 语句,并对其进行了修改,以查找给定特定 order_item_id 行的 order_id。让我知道这是如何运作的。

function so_38286531_get_order_item_order_id( $item_id ) {
    global $wpdb;

    $order_id = $wpdb->get_var( $wpdb->prepare(
        "SELECT order_id FROM {$wpdb->prefix}woocommerce_order_items
         WHERE order_item_id = %d",
        $item_id
    ) );

    return $order_id;
}

关于Woocommerce 从 item_id 之一获取 order_id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38286531/

相关文章:

wordpress - 将产品图片添加到 Woocommerce 我的帐户订单 View

php - 如果 WooCommerce 中没有特定类别的产品,则自定义感谢重定向

c# - 旋转 3d 模型 XAML c#

c - 使用 C 中的文本文件的银行帐户存款选项

php - 根据运输方式自定义 Woocommerce 新订单电子邮件通知

php - 在购物车和订单商品名称下显示 woocommerce 产品自定义字段

css - 只缩小产品页面和页脚之间的差距?

php - 访客结帐即使在未请求时也会创建帐户

wordpress - 如何隐藏 Woocommerce "out of stock"商品价格

WordPress - 为自定义管理表创建内联编辑?