Luego de observar en varios repositorios y sitios webs al terminar hallamos la respuesta que te mostramos más adelante.
Solución:
Si desea los detalles del cliente que el cliente ingresó al realizar el pedido, puede usar el siguiente código:
$order = new WC_Order($order_id);
$billing_address = $order->get_billing_address();
$billing_address_html = $order->get_formatted_billing_address();
// For printing or displaying on the web page
$shipping_address = $order->get_shipping_address();
$shipping_address_html = $order->get_formatted_shipping_address(); // For printing or displaying on web page
Aparte de esto, $customer = new WC_Customer( $order_id );
no puedo obtener los detalles de su cliente.
Ante todo, new WC_Customer()
no acepta argumentos.
En segundo lugar, WC_Customer
obtendrá los detalles del cliente solo cuando el usuario haya iniciado sesión y no esté en el lado del administrador. En su lugar, debe estar en el front-end del sitio web, como la página ‘Mi cuenta’, ‘Comprar’, ‘Carrito’ o ‘Pagar’.
Habiendo intentado $customer = new WC_Customer();
y global $woocommerce; $customer = $woocommerce->customer;
Seguía recibiendo datos de dirección vacíos incluso cuando inicié sesión como usuario no administrador.
Mi solución fue la siguiente:
function mwe_get_formatted_shipping_name_and_address($user_id)
$address = '';
$address .= get_user_meta( $user_id, 'shipping_first_name', true );
$address .= ' ';
$address .= get_user_meta( $user_id, 'shipping_last_name', true );
$address .= "n";
$address .= get_user_meta( $user_id, 'shipping_company', true );
$address .= "n";
$address .= get_user_meta( $user_id, 'shipping_address_1', true );
$address .= "n";
$address .= get_user_meta( $user_id, 'shipping_address_2', true );
$address .= "n";
$address .= get_user_meta( $user_id, 'shipping_city', true );
$address .= "n";
$address .= get_user_meta( $user_id, 'shipping_state', true );
$address .= "n";
$address .= get_user_meta( $user_id, 'shipping_postcode', true );
$address .= "n";
$address .= get_user_meta( $user_id, 'shipping_country', true );
return $address;
…y este código funciona independientemente de si ha iniciado sesión como administrador o no.
¿Quizás mire la clase de orden de WooCommerce? Por ejemplo, para obtener la dirección de correo electrónico del cliente:
$order = new WC_Order($order_id);
echo $order->get_billing_email();
Solo un pensamiento…