Do método __get()
na classe WC_Order
, você pode ver que a propriedade user_id
é obtida / armazenada como _customer_user
post meta para o pedido em questão.
/**
* __get function.
*
* @access public
* @param mixed $key
* @return mixed
*/
public function __get( $key ) {
// Get values or default if not set
if ( 'completed_date' == $key ) {
$value = ( $value = get_post_meta( $this->id, '_completed_date', true ) ) ? $value : $this->modified_date;
} elseif ( 'user_id' == $key ) {
$value = ( $value = get_post_meta( $this->id, '_customer_user', true ) ) ? absint( $value ) : '';
} else {
$value = get_post_meta( $this->id, '_' . $key, true );
}
return $value;
}
Então, no seu código, você pode pegar o ID do usuário assim:
$order = new WC_Order( $order_id );
$user_id = $order->user_id;
Eu presumo que você não vai permitir o check-out de hóspedes, mas você pode querer algum tipo de retorno caso não haja um ID de usuário.
Atualização para o WooCommerce 3.0
Desconsidere todos os itens acima. Como apontado nos comentários, existem métodos diretos para obter essa informação. Na verdade, quase todos os "métodos mágicos" foram removidos e acessar diretamente as propriedades do objeto lançará avisos do PHP.
$order = wc_get_order( $order_id );
$user = $order->get_user();
$user_id = $order->get_user_id();