Вопрос или проблема
Я использую тему для бронирования туров, эта тема использует основной плагин, который может добавлять туры в независимую вкладку. После публикации тура и его просмотра есть кнопка “Забронировать сейчас” для каждого тура. Когда на эту кнопку нажимают, в корзину добавляются и отображаются название тура, цена, количество и дата бронирования. После перехода к оплате и заполнения данных пользователя нажимается кнопка “Сделать заказ” для отправки заказа.
По электронной почте отправляется сообщение через 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
.
Решение
-
Извлечение данных тура
Вам нужно убедиться, что вы правильно извлекаете данные о турах, используя правильные функции и идентификаторы. Попробуем использовать WooCommerce hook, чтобы добавить поля в ваше письмо.
-
Код в
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>'; } } }
-
Загружаем дополнительные данные из метаполей
Убедитесь, что мета-поля (highlight, includes, excludes и itinerary) правильно зарегистрированы и связаны с товарами. В коде выше мы получили данные из мета-поля
tours_highlights_title_list
, чтобы отобразить его в электронной почте. Для остальных метаполей вам просто нужно будет аналогично использоватьget_post_meta
. -
Тестирование изменений
После внесения изменений обязательно проведите тестирование, чтобы убедиться, что изменения работают правильно. Оформите заказ и проверьте, присылаются ли новые данные в электронном письме.
-
SEO Оптимизация
Для поисковой оптимизации вашего сайта, убедитесь, что вы используете сигналы, которые помогут улучшить индексацию. Например, использование чистых заголовков и структурированных данных поможет поисковым системам лучше понять, о чем страница.
Заключение
Добавление информации о турах в электронные письма WooCommerce — это важный шаг к улучшению пользовательского опыта и предоставлению дополнительной ценности вашим клиентам. С помощью простого изменения в функций вашего сайта вы можете эффективно отправлять необходимую информацию. Если у вас возникнут сложности, не стесняйтесь обратиться за дополнительной помощью или документацией по WooCommerce и WordPress.
Если появятся новые вопросы или нужны уточнения по какому-либо аспекту, не стесняйтесь задавать.