Включить заполнитель настраиваемого поля для темы электронной почты Woocommerce - PullRequest
0 голосов
/ 03 января 2019

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

add_action( 'woocommerce_checkout_fields', 'woo_add_conditional_checkout_fields' );
function woo_add_conditional_checkout_fields( $fields ) {
    foreach( WC()->cart->get_cart() as $cart_item ){
        $product_id = $cart_item['product_id'];
        $fields['billing']['billing_field_newfield'] = array(
            'label'       => __('New Field', 'woocommerce'),
            'placeholder' => _x('', 'placeholder', 'woocommerce'),
            'required'    => true,
            'class'       => array('form-row-wide'),
            'clear'       => false
        );
    }
    return $fields;
}

Теперь я хотел бы включить значение, которое пользователь вводит в это поле, в «Новый заказ»'тема электронной почты woocommerce с использованием {billing_field_newfield} пользовательского заполнителя.

Однако, когда я захожу в Woocommerce> Настройки> Электронная почта> Новый заказ и помещаю {billing_field_newfield} в тему, я просто получаю {billing_field_newfield} в письме, а неего фактическое значение.

Как добавить настраиваемый динамический заполнитель для темы электронной почты в Woocommerce?

1 Ответ

0 голосов
/ 03 января 2019

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

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

код:

add_filter( 'woocommerce_email_format_string' , 'add_custom_email_format_string', 20, 2 );
function add_custom_email_format_string( $string, $email ) {
    // The post meta key used to save the value in the order post meta data
    $meta_key = '_billing_field_newfield';

    // Get the instance of the WC_Order object
    $order    = $email->object;

    // Get the value
    $value = $order->get_meta($meta_key) ? $order->get_meta($meta_key) : '';

    // Additional subject placeholder
    $new_placeholders = array( '{billing_field_newfield}' => $value );

    // Return the clean replacement value string for "{billing_field_newfield}" placeholder
    return str_replace( array_keys( $additional_placeholders ), array_values( $additional_placeholders ), $string );
}

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

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

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