我想通过订单获取客户的“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 的新手,可能非常糟糕。
要从订单 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;
}
对于那些想要专门将订单中的客户 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 返回字段。