Получить имя клиента в электронном письме с подтверждением

Я работаю с Woocommerce, и я собираюсь сделать электронное письмо с подтверждением заказа.

Он хочет, чтобы почта говорила:

"Привет [имя клиента]"

Как вы получаете Woocommerce для печати имени клиента?

Ответ 1

Вам нужен объект заказа, поэтому в зависимости от того, какой крюк вы используете, он должен быть там. Попробуйте что-то вроде этого:

add_action('woocommerce_order_status_completed','my_woo_email');
function my_woo_email($order_id){

           $order = new WC_Order( $order_id );
           $to = $order->billing_email;
           $subject = 'this is my subject';
           $message = 'Hi '.$order->billing_first_name.' '.$order->billing_email;$order->billing_last_name.', thanks for the order!';

                woocommerce_mail( $to, $subject, $message, $headers = "Content-Type: text/htmlrn", $attachments = "" )

}

Это не проверено, но вы должны начать работу

Ответ 2

Вот мой стартовый пример получения кучи информации о клиенте WooCommerce внутри цикла WP_Query:

$args = array(
    'post_status'    => 'any',
    'post_type'      => 'shop_order',
    'posts_per_page' => -1,
    'order'          => 'ASC'
);

$query = new WP_Query( $args );

while ( $query->have_posts() ) {

    $query->the_post();

    $order    = new WC_Order( $query->post->ID );

    echo $order->billing_address_1;
    echo $order->billing_address_2;
    echo $order->billing_city;
    echo $order->billing_company;
    echo $order->billing_country;
    echo $order->billing_email;
    echo $order->billing_first_name;
    echo $order->billing_last_name;
    echo $order->billing_phone;
    echo $order->billing_postcode;
    echo $order->billing_state;
    echo $order->cart_discount;
    echo $order->cart_discount_tax;
    echo $order->customer_ip_address;
    echo $order->customer_user;
    echo $order->customer_user_agent;
    echo $order->order_currency;
    echo $order->order_discount;
    echo $order->order_key;
    echo $order->order_shipping;
    echo $order->order_shipping_tax;
    echo $order->order_tax;
    echo $order->order_total;
    echo $order->payment_method;
    echo $order->payment_method_title;
    echo $order->shipping_address_1;
    echo $order->shipping_address_2;
    echo $order->shipping_city;
    echo $order->shipping_company;
    echo $order->shipping_country;
    echo $order->shipping_first_name;
    echo $order->shipping_last_name;
    echo $order->shipping_method_title;
    echo $order->shipping_postcode;
    echo $order->shipping_state;
}
wp_reset_postdata();

Надеюсь, это будет полезно для кого-то еще.

Ответ 3

Как и в WooCommerce 3.x, свойства объекта $order не должны быть доступны напрямую, как предложено в предыдущих ответах. Правильный способ:

echo 'Hi ' . $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();

Ответ 4

вы можете получить данные клиента из объекта $order, что-то вроде этого.

$customer = get_userdata( $order->get_customer_id() );
$name = $customer->display_name;