从 WooCommerce 中的订单 ID 获取客户 ID

问题描述 投票:0回答:2

我想通过订单获取客户的“mycred”余额,同时使用 WP ALL Export 将基于订单的客户余额导出到电子表格。实际上可能很简单。我能够获取订单 ID,但无法获取客户 ID

这是我正在做的测试是否可以获得客户 ID 的操作:

function get_customeruserid($value)
{
  global $woocommerce, $post;

  $order = new WC_Order($post->ID);
  $order_id = $order->get_order_number();

  $customer = new WC_Customer($post->ID);
  $user_id = $customer->get_ID();

  $value = $user_id;
  return $value;
}

这将返回 0。

但是,我可以通过这样做轻松获得订单号:

function get_customerorderid($value)
{
  global $woocommerce, $post;

  $order = new WC_Order($post->ID);
  $order_id = $order->get_order_number();

  $value = $order_id;
  return $value;
}

这会返回客户的订单号,这很好,但只是成功了一半。我现在想要客户 ID,因此我调用 mycred 余额函数来显示他们的余额。

有什么想法吗?我是 php 的新手,可能非常糟糕。

php wordpress woocommerce orders userid
2个回答
40
投票

要从订单 ID 中获取用户 ID,您可以使用多种方法,以下是其中 2 种: 在 WooCommerce 3.0+ 中,您可以这样使用

WC_Order
类方法

function get_customerorderid(){
    global $order, $post;

    if( ! is_a($order, 'WC_Order') ) {
        $order_id = $post->ID;

        // Get an instance of the WC_Order object
        $order = wc_get_order($order_id);
    } else {
        $order_id = $order->id;
    }

    // Get the user ID from WC_Order methods
    $user_id = $order->get_user_id(); // or $order->get_customer_id();

    return $user_id;
}

在 WooCommerce 3.0 版本之前,您可以这样使用

get_post_meta()
功能:

function get_customerorderid(){
    global $order, $post;

    if( ! is_a($order, 'WC_Order') ) {
        $order_id = $post->ID;
    } else {
        $order_id = $order->id;
    }

    // Get the user ID
    $user_id = get_post_meta($order_id, '_customer_user', true);

    return $user_id;
}

7
投票

对于那些想要专门将订单中的客户 mycred 余额添加到 WP All Export 内的 CSV 表中的人,这里是我使用的代码。 感谢您的帮助解决问题。

在 WP ALL EXPORT 中编辑 ORDER 导出时,添加一个新数据对象并单击它并“导出 PHP 函数返回的值”,然后在代码编辑器中添加以下函数:

function all_export_mycred($balance)
{
    global $woocommerce, $post;

    $order = new WC_Order($post->ID);
    $user_id = $order->get_user_id( );

    $balance = mycred_get_users_balance( $user_id );

            return $balance;

    }

然后确保将“all_export_mycred”添加到 php 返回字段。

© www.soinside.com 2019 - 2024. All rights reserved.