Удалить номер заказа из электронных писем WooCommerce "Заказ в ожидании" и "Новый заказ" - PullRequest
0 голосов
/ 08 мая 2018

Я хотел бы удалить автоматически сгенерированный номер заказа из электронных писем "Заказ на удержании" и "Новый заказ", созданных WooCommerce.

Я использую сторонний плагин для назначения пользовательских номеров заказов после размещения заказа, поэтому важно, чтобы новый номер заказа, который я назначил, все еще мог использоваться в будущих электронных письмах. Я не хочу, чтобы клиент (или администратор) видел исходный номер заказа, пока он не был изменен.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 08 мая 2018

Обновлено (только для определенного шаблона woocommerce 3.3+)

Вам потребуется переопределить шаблон электронной почты Woocommerce через вашу дочернюю тему, как описано в приведенной ниже официальной документации:

Структура шаблона и переопределение шаблонов через тему

Шаблон для копирования и переопределения: woocommerce/templates/emails/email-order-details.php

В этом шаблоне (скопированном в вашу тему, как объяснено) вам потребуется изменить весь этот блок:

<h2>
    <?php
    if ( $sent_to_admin ) {
        $before = '<a class="link" href="' . esc_url( $order->get_edit_order_url() ) . '">';
        $after  = '</a>';
    } else {
        $before = '';
        $after  = '';
    }
    /* translators: %s: Order ID. */
    echo wp_kses_post( $before . sprintf( __( 'Order #%s', 'woocommerce' ) . $after . ' (<time datetime="%s">%s</time>)', $order->get_order_number(), $order->get_date_created()->format( 'c' ), wc_format_datetime( $order->get_date_created() ) ) );
    ?>
</h2>

до:

<?php
    // Targetting specific email notificatoins
    $email_ids = array('new_order', 'customer_on_hold_order');

    $date = sprintf( '<time datetime="%s">%s</time>', $order->get_date_created()->format( 'c' ), wc_format_datetime( $order->get_date_created() ) );

    // Displaying order number except for "New Order" and "Customer On Hold Order" notifications
    if( ! in_array($email->id, $email_ids) ){
        $order_number = sprintf( __( 'Order #%s', 'woocommerce' ), $order->get_order_number() );
        $date = '('.$date.')';
    } else {
        $date = __('Order date:', 'woocommerce') . ' ' . $date;
        $order_number = '';
    }

    if ( $sent_to_admin ) {
        $before = '<a class="link" href="' . esc_url( $order->get_edit_order_url() ) . '">';
        $after  = '</a> ';
    } else {
        $before = '';
        $after  = ' ';
    }
?>

<h2><?php echo $before . $order_number . $after . $date; ?></h2>

Это приведет к удалению номера заказа из электронных уведомлений «Новый заказ» и «Заказ клиента в ожидании». Вы получите:

1) Новый заказ (админ):

enter image description here

2) Заказ клиента на удержании:

enter image description here

Теперь вам также понадобится в WooCommerce> Настройки> Электронные письма, чтобы удалить ({order_number}) из темы «Новый заказ» и сохранить…

enter image description here

Вы сделали ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...