Добавить содержимое поста в электронное письмо WooCommerce

Вопрос или проблема

Я использую тему для бронирования туров, эта тема использует основной плагин, который может добавлять туры в независимую вкладку. После публикации тура и его просмотра есть кнопка “Забронировать сейчас” для каждого тура. Когда на эту кнопку нажимают, в корзину добавляются и отображаются название тура, цена, количество и дата бронирования. После перехода к оплате и заполнения данных пользователя нажимается кнопка “Сделать заказ” для отправки заказа.

По электронной почте отправляется сообщение через customer-processing-email.php клиенту с деталями заказа, сейчас я пытаюсь добавить информацию о других турах, таких как (особенности, что включено и что исключено, маршрут). Но так как я новичок в WooCommerce и разработке WordPress, я не уверен, как я могу получить доступ к туру, достичь его полей и отправить их вместе с электронной почтой.

Допустим, я хочу отправить особенности, которые определены в “tours.php” следующим образом:

CSF::createSection(
    "EGNS_TOURS_META_ID",
    array(
        'parent' => 'tours_highlights_meta_option',
        'title'  => esc_html__('Особенности тура', 'triprex-core'),
        'fields' => array(
            array(
                'type'    => 'subheading',
                'content' => esc_html__('Особенности тура', 'triprex-core'),
            ),
            array(
                'id'      => 'tours_highlights_title',
                'type'    => 'text',
                'title'   => esc_html__('Название заголовка', 'triprex-core'),
                'default' => 'Особенности тура',
            ),
            array(
                'id'    => 'tours_highlights_title_list',
                'type'  => 'textarea',
                'title' => esc_html__('Содержание', 'triprex-core'),
                'desc'  => 'Введите список особенностей, разделённых <mark>переносами строки</mark>',
            ),
        ),
    )
); 

Как я могу использовать functions.php и шаблон customer-processing-email.php, чтобы добавить это поле туда?

Я пытался использовать хуки в functions.php, чтобы изменить содержание электронной почты, но это не сработало:
add_action(‘woocommerce_email_order_meta’, ‘add_tour_highlights_to_email’, 10, 3);

function add_tour_highlights_to_email($order_id, $sent_to_admin, $order) {
   
    $tour_highlight = Egns\Helper\Egns_Helper::egns_tours_value('tours_highlights_title_list');
if ($tour_highlight) {
    $tour_highlight_list = explode("\n", $tour_highlight);
    
    echo '<h2>Особенности тура</h2>';
    echo '<ul>';

    foreach ($tour_highlight_list as $item) {
        $trimmed_item = trim($item);
        if (!empty($trimmed_item)) {
            echo '<li>' . esc_html($trimmed_item) . '</li>';
        }
    }

    echo '</ul>';
}
}

Спасибо.

Ответ или решение

Чтобы добавить информацию о турах, такие как "Highlights", "Includes", "Excludes" и "Itinerary", в электронные письма WooCommerce, необходимо внести изменения в шаблон email и использовать функции, которые позволят извлекать данные о турах из базы данных. Рассмотрим это подробнее, следуя структуре FOREST.

Понять проблему и контекст

Вы используете тему для бронирования туров, которая имеет возможность создавать кастомные поля для информации о турах. После оформления заказа, вы хотите, чтобы в письме покупателя отображалась дополнительная информация о турах. Для этого необходимо получить данные из мета-полей тура и вставить их в шаблон письма customer-processing-email.php.

Решение

  1. Извлечение данных тура

    Вам нужно убедиться, что вы правильно извлекаете данные о турах, используя правильные функции и идентификаторы. Попробуем использовать WooCommerce hook, чтобы добавить поля в ваше письмо.

  2. Код в functions.php

    Измените ваш код в файле functions.php, чтобы извлечь данные о Highlight из мета-полей тура, связанного с заказом. Примерно это может выглядеть так:

    add_action('woocommerce_email_order_meta', 'add_tour_highlights_to_email', 10, 3);
    
    function add_tour_highlights_to_email($order_id, $sent_to_admin, $order) {
       $items = $order->get_items(); // Получаем элементы заказа
    
       foreach ($items as $item_id => $item) {
           $product_id = $item->get_product_id(); // Получаем ID продукта
    
           // Предполагается, что ваши мета-поля хранятся как пользовательские поля
           $tour_highlight = get_post_meta($product_id, 'tours_highlights_title_list', true); 
    
           if ($tour_highlight) {
               $tour_highlight_list = explode("\n", $tour_highlight);
    
               echo '<h2>Highlights of the Tour</h2>';
               echo '<ul>';
    
               foreach ($tour_highlight_list as $highlight) {
                   $trimmed_highlight = trim($highlight);
                   if (!empty($trimmed_highlight)) {
                       echo '<li>' . esc_html($trimmed_highlight) . '</li>';
                   }
               }
    
               echo '</ul>';
           }
       }
    }
  3. Загружаем дополнительные данные из метаполей

    Убедитесь, что мета-поля (highlight, includes, excludes и itinerary) правильно зарегистрированы и связаны с товарами. В коде выше мы получили данные из мета-поля tours_highlights_title_list, чтобы отобразить его в электронной почте. Для остальных метаполей вам просто нужно будет аналогично использовать get_post_meta.

  4. Тестирование изменений

    После внесения изменений обязательно проведите тестирование, чтобы убедиться, что изменения работают правильно. Оформите заказ и проверьте, присылаются ли новые данные в электронном письме.

  5. SEO Оптимизация

    Для поисковой оптимизации вашего сайта, убедитесь, что вы используете сигналы, которые помогут улучшить индексацию. Например, использование чистых заголовков и структурированных данных поможет поисковым системам лучше понять, о чем страница.

Заключение

Добавление информации о турах в электронные письма WooCommerce — это важный шаг к улучшению пользовательского опыта и предоставлению дополнительной ценности вашим клиентам. С помощью простого изменения в функций вашего сайта вы можете эффективно отправлять необходимую информацию. Если у вас возникнут сложности, не стесняйтесь обратиться за дополнительной помощью или документацией по WooCommerce и WordPress.

Если появятся новые вопросы или нужны уточнения по какому-либо аспекту, не стесняйтесь задавать.

Оцените материал
Добавить комментарий

Капча загружается...