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

Примечание. В этом документе речь идет о классических темах с PHP-шаблонами. Если вы используете блочную тему с HTML-шаблонами, ознакомьтесь с документацией по блочным темам.

Обзор

Файлы шаблонов WooCommerce содержат разметку и структуру страниц магазина и HTML-писем.

Список шаблонов

Файлы шаблонов WooCommerce можно найти через FTP или файловый менеджер хостинга в папке:

/wp-content/plugins/woocommerce/templates/

Также шаблоны доступны в репозитории GitHub.

Примечание: если вам нужны шаблоны для старых версий, используйте:

  • Версии 6.0.0 и выше: https://github.com/woocommerce/woocommerce/tree/[VERSION_NUMBER]/plugins/woocommerce/templates
  • Версии ниже 6.0.0: https://github.com/woocommerce/woocommerce/tree/[VERSION_NUMBER]/templates

Изменение шаблонов через хуки

В каждом шаблоне есть хуки (hooks). Они позволяют добавлять или менять контент без редактирования самих файлов.

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

Пример хука из шаблона письма о новом заказе:

/*
 * @hooked WC_Emails::order_details() Показывает таблицу с деталями заказа.
 * @hooked WC_Structured_Data::generate_order_data() Генерирует структурированные данные.
 * @hooked WC_Structured_Data::output_structured_data() Выводит структурированные данные.
 * @since 2.5.0
 */
do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );

Этот код выводит блок с деталями заказа в письме о новом заказе.

Пример письма о новом заказе

Вы можете добавить свой код в этот хук:

add_action( 'woocommerce_email_order_details', 'my_custom_woo_function' );

function my_custom_woo_function() {
    /* Здесь ваш код */
}

Так можно изменять содержимое шаблонов без их редактирования.

Изменение шаблонов через редактирование файлов

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

Правильный способ — использовать дочернюю тему.

Например, создаем тему storefront-child. В ней создаем папку:

/storefront-child/woocommerce/

Затем копируем нужный шаблон из плагина, сохраняя структуру папок (но без папки /templates/).

Пример:

  • Откуда: wp-content/plugins/woocommerce/templates/emails/admin-new-order.php
  • Куда: wp-content/themes/storefront-child/woocommerce/emails/admin-new-order.php

После этого WooCommerce будет использовать ваш файл вместо стандартного.

Важно: шаблоны WooCommerce могут обновляться. Ваши копии — нет. Иногда нужно будет вручную обновлять свои шаблоны, чтобы они соответствовали новой версии.

Поддержка пользовательских шаблонов в теме

Если вы разрабатываете тему или используете тему с кастомными шаблонами, нужно добавить поддержку WooCommerce через функцию:

add_theme_support( 'woocommerce' );

Если в теме есть файл woocommerce.php, он имеет приоритет над другими шаблонами. В этом случае некоторые шаблоны (например, archive-product.php) не получится переопределить.

Поделиться с друзьями
Документация WooCommerce