Получить местный пикап плюс детали заказа в Woocommerce - PullRequest
1 голос
/ 29 марта 2019

В Woocommerce я просто хочу, чтобы информация о доставке по местному самовывозу отображалась в настраиваемом электронном письме. Я попробовал приведенные ниже функции, но они ничего не показывают для «местного пикапа».

Какую функцию я могу использовать, чтобы получить информацию о "местном пикапе"?

Я безуспешно пробовал следующие WC_Order методы:

  • $order->get_shipping_address_1()
  • $order->get_formatted_shipping_address()

Редактировать:

Извините, я не упомянул об этом, но я использую Local Pickup Plus плагин


Редактировать 2:

Так я получил информацию о локальном захвате для плагина Local Pickups Plus docs.woocommerce.com/document/local-pickup-plus, который помещает метаданные в основную переменную порядка.

$order = wc_get_order( $order_id );

foreach ($order->get_data() as $key => $value):
        if ($key==='shipping_lines'):
            foreach ($value as $k=>$v):
                $a = $v->get_meta_data();
                foreach ($a as $x=>$y):
                    $t = $y->get_data();
                    $mykey = $t['key'] ;
                    $pickup["$mykey"] = $t['value'];
                endforeach;
            endforeach;
        endif;
endforeach;

Тогда вы можете использовать следующие переменные:

$pickup['_pickup_location_name']
$pickup['_pickup_location_address']['address_1']
$pickup['_pickup_location_phone']['address_2']
$pickup['_pickup_location_address']['postcode']
$pickup['_pickup_location_address']['city']
$pickup['_pickup_location_address']['state'] $pickup['_pickup_location_address']['country']
$pickup['_pickup_location_phone']
$pickup['_pickup_date']
$pickup['_pickup_minimum_hours']

1 Ответ

1 голос
/ 29 марта 2019

Сведения о доставке элементов заказа указаны в: " Получить сведения о способе доставки заказов в WooCommerce 3 "

Для нацеливания деталей строки заказа от объекта WC_Order вы можете использовать следующий код:

<code>// Loop though order items shipping
foreach( $order->get_shipping_methods() as $item_id => $item ){
    $shipping_item_name          = $item->get_name();
    $shipping_item_type          = $item->get_type();
    $shipping_method_title       = $item->get_method_title();
    $shipping_method_id          = $item->get_method_id();
    $shipping_method_instance_id = $item->get_instance_id();
    $shipping_method_total       = $item->get_total();
    $shipping_method_total_tax   = $item->get_total_tax();
    $shipping_method_taxes       = $item->get_taxes();

    // Get custom meta-data
    $formatted_meta_data = $item->get_formatted_meta_data( ' ', true );

    // Displaying the row custom meta data Objects (just for testing)
    echo '<pre>'; print_r($formatted_meta_data); echo '
'; }

Относительно пользовательских метаданных доставки:

Вы можете получить к нему доступ, используя WC_Data метод get_meta() из пользовательских мета-данных "key" , расположенных в любых пользовательских объектах метаданных, например:

$value = $item->get_meta('the_custom_key'); // 'the_custom_key' need to be replaced by the meta "key".

Примечание: В большинстве Woocommerce шаблонов электронной почты и хуков, связанных с уведомлениями по электронной почте , вы можете использовать объект WC_Order, поскольку он включен глобально. Если нет, вы можете получить его из идентификатора заказа, например:

$order = wc_get_order( $order_id );

Заказы, связанные темы:


Дополнение - для плагина Local Pickup Plus

Похоже, что вы используете плагин Local Pickup Plus , который добавляет определенные пользовательские метаданные в строки доставки.

// Loop though order items shipping
foreach( $order->get_shipping_methods() as $item_id => $item ){
    $location_id        = $item->get_meta('_pickup_location_id');
    $location_name      = $item->get_meta('_pickup_location_name');

    $location_address   = $item->get_meta('_pickup_location_address'); // Array
    $location_address_1 = $location_address['address_1'];
    $location_address_2 = $location_address['address_2'];
    $location_postcode  = $location_address['postcode'];
    $location_city      = $location_address['city'];
    $location_state     = $location_address['state'];
    $location_country   = $location_address['country'];

    $location_phone     = $item->get_meta('_pickup_location_phone');

    $pickup_date        = $item->get_meta('_pickup_date');
    $pickup_min_hours   = $item->get_meta('_pickup_minimum_hours');
}
...