Добавить собственный заполнитель для темы электронной почты в WooCommerce - PullRequest
1 голос
/ 08 апреля 2019

У меня есть магазин Woocommerce, и я хотел добавить delivery_date после того, как я принял платеж.

Я создаю настраиваемое поле в разделе заказа с именем delivery_date со значением даты.

Теперь я хотел использовать это настраиваемое поле в качестве заполнителя в теме уведомлений по электронной почте, например:

Ваш заказ сейчас {order_status}. Детали заказа показаны ниже для вашей справки: deliverydate: {delivery_date}

Я думаю, что заполнитель не работает так, мне нужно что-то изменить в php, но я не знаю, где.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Чтобы добавить пользовательский активный заполнитель {delivery_date} в тему электронной почты woocommerce, вы будете использовать следующую подключенную функцию.

Перед этим вы проверите, что delivery_date - это правильный мета-ключ поста, используемый для сохранения значения поля оформления заказа в порядке (проверьте в wp_postmeta таблице базы данных для заказа post_id) .

код:

add_filter( 'woocommerce_email_format_string' , 'add_custom_email_format_string', 10, 2 );
function add_custom_email_format_string( $string, $email ) {
    $meta_key    = 'delivery_date'; // The post meta key used to save the value in the order
    $placeholder = '{delivery_date}'; // The corresponding placeholder to be used
    $order = $email->object; // Get the instance of the WC_Order Object
    $value = $order->get_meta($meta_key) ? $order->get_meta($meta_key) : ''; // Get the value

    // Return the clean replacement value string for "{delivery_date}" placeholder
    return str_replace( $placeholder, $value, $string );
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Должно работать.

Затем в Woocommerce> Настройки> Электронная почта> Уведомление «Новый заказ» вы сможете использовать динамический заполнитель {delivery_date}

0 голосов
/ 08 апреля 2019

Если вы хотите напечатать значение «delivery_date» в содержимом электронной почты, вы можете сделать это следующим образом.

$content = "Your order is now %%order_status%%. Order details are shown below for your reference: deliverydate: %%delivery_date%%";
$search_array = ["{order_status}","{delivery_date}"]
$replace_array = [$valueOfOrderStatus,$valueOfDeliveryDate];
$content = str_replace($search_array, $replace_array, $content);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...