プログラムでdrupalコマース)で配送先住所(正確には配送先の国)を取得する必要があります。$order
オブジェクト。配送先住所を取得するにはどうすればよいですか?
編集-Ok私はこれをやった
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$shipping = $order_wrapper->commerce_customer_shipping->value();
もう一度まとめる必要がありますが、タイプがわかりません
$shipping_wrapper = entity_metadata_wrapper(?, $order);
疑問符の代わりに何を入れればよいですか?
OK、私はこのようにこれをやった
function commerce_shipping_biagetti_service_rate_order($shipping_service, $order) {
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$shipping = $order_wrapper->commerce_customer_shipping->commerce_customer_address->value();
//$shipping is an array containing all shipping data
顧客/ユーザーの配送先住所を見つけるには2つの方法があります。
function get_user_shipping_address(){
global $user;
$default_pid =commerce_addressbook_get_default_profile_id($user->uid,'shipping');
プロファイルIDを取得した後、プロファイルをロードして顧客名と住所を取得できます
$profile_load = commerce_customer_profile_load($default_pid);
$first_line = $profile_load->commerce_customer_address['und'][0]['name_line'];
$landmark = $profile_load->commerce_customer_address['und'][0]['sub_premise'];
$postal_code = $profile_load->commerce_customer_address['und'][0]['postal_code'];
$state = $profile_load->commerce_customer_address['und'][0]['locality'];
$add[] = $first_line . ' ' . $landmark . ' ' . $postal_code . ' ' . $state;
return $add;
}
$ orderがある場合の2番目の方法
function get_default_address_of_customer_by_order_id($order) {
$order1 = commerce_order_load($order);
$shipping_id = $order1->commerce_customer_shipping['und'][0]['profile_id'];
$address = commerce_customer_profile_load($shipping_id);
$first_line = $address->commerce_customer_address['und'][0]['name_line'];
$landmark = $address->commerce_customer_address['und'][0]['sub_premise'];
$postal_code = $address->commerce_customer_address['und'][0]['postal_code'];
$state = $address->commerce_customer_address['und'][0]['locality'];
$add[] = $first_line . ' ' . $landmark . ' ' . $postal_code . ' ' . $state;
return $add;
}
commerce_customer_profile_load($profile_id)
を使用できます。注文オブジェクトがあるため、プロファイルIDは$order->commerce_customer_shipping
変数からフェッチできます。