Получить идентификатор клиента из идентификатора заказа в WooCommerce

Я хочу получить «mycred» баланс клиента через заказ, используя WP ALL Export для экспорта баланса клиента на основе заказов в электронную таблицу. Это на самом деле, вероятно, довольно просто. Я могу получить идентификатор заказа, но не идентификатор клиента

Вот что я делаю, чтобы проверить, могу ли я получить идентификатор клиента:

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;
}

Это возвращает номер заказа клиента, который хорош, но только полдела. Теперь мне нужен идентификатор клиента, поэтому я вызываю функцию mycred balance, чтобы показать их баланс.

Есть идеи? Я новичок в php и, вероятно, очень плохо.

4

Решение

Вы можете использовать номер заказа, чтобы получить соответствующий идентификатор клиента, используя запрос к базе данных, мета-запрос Google WordPress

0

Другие решения

Чтобы получить идентификатор пользователя из идентификатора заказа, вы можете использовать много способов, вот 2 из них:

В WooCommerce от 2.5 до 3.0+ вы можете использовать get_post_meta() функционировать так:

function get_customerorderid(){
global $post;
$order_id = $post->ID;

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

return $user_id;
}

В WooCommerce 3.0+ вы можете использовать методы класса WC_Order сюда:

function get_customerorderid(){
global $post;
$order_id = $post->ID;

// Get an instance of the WC_Order object
$order = wc_get_order($order_id);

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

return $user_id;
}
18

Для тех, кто хочет специально добавить баланс mycred клиента из ORDER в таблицу CSV в WP All Export, здесь приведен фрагмент кода, который я использовал.
Спасибо за вашу помощь в решении проблемы.

При редактировании экспорта ORDER в WP ALL EXPORT добавьте новый объект данных и нажмите на него и «Экспортируйте значение, возвращаемое функцией 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.

5