Как изменять WooCommerce. Эпизод #1. Введение: файлы, хуки, фильтры
Теоретические выкладки, о структуре файлов WooCommerce и о том, как правильно изменять WooCommerce через хуки. Вводное видео, о том как работают хуки в WooCommerce, какими инструментами пользоваться и правильно изменять файлы.
- Инструменты
- Бесплатные редакторы
- Как правильно добавлять код
- Дочерняя тема
- Специальный плагин
- Где смотреть документацию по WooCommerce
- Как работают хуки в WordPress
- Как изменять (переопределять) файлы WooCommerce
- Примеры использования хуков
- Включение поддержки WooCommerce в теме
- Отключение стилей WooCommerce
- Загрузка файлов CSS и JavaScript WooCommerce только на страницах магазина
- Заключение
Инструменты
Для правки кода требуется использовать редакторы кода. Так как в них есть подсветка кода и очень удобно вносить правки или писать код с нуля.
В видео весь код правится через PhpStorm это не просто редактор, а целая система. Очень крутая, но платная. Хотя можно скачать или триальную версию, или пользоваться бетой совершенно бесплатно.
к содержаниюБесплатные редакторы
Пользоваться можно любым, главное, чтобы удобно было. Рекомендую VS Code — при правильной настройке будет не хуже PhpStorm
к содержаниюКак правильно добавлять код
Существует два способа:
- через дочернюю тему
- через специальный плагин
Все это делается для того, что бы при обновлении темы все ваши изменения сохранились.
Дочерняя тема
Дочернюю тему можно сделать самостоятельно или использовать плагин. Как сделать самостоятельно смотрите в видео
Еще удобно дочернюю тему сделать через плагин. Например, плагин Child Theme Configurator позволит прямо из админки создать дочернюю тему. После использования плагин можно удалить.
к содержаниюСпециальный плагин
Другой способ вносить изменения использовать специальные плагины. Например, плагин Code Snippets позволяет делать подобные вставки. Или можно использовать пустой плагин. Об использовании пустого плагина, можно узнать в этой статье.
Всегда внимательно копируйте код сниппетов и делайте бекапы, не ленитесь.
к содержаниюГде смотреть документацию по WooCommerce
Нигде) Расписанной документации как таковой нет. Можно посмотреть то, что есть на официальном сайте
Без поллитры в ней не разобраться)
Предпочитаю смотреть код WooCommerce на GitHub, а если установить расширение Octotree для браузера Хром, то становится очень удобно просматривать файлы.
К тому же, на GitHub есть еще Wiki по WooCommerce, в которой подробно расписаны некоторые моменты. Это бывает полезно.
к содержаниюКак работают хуки в WordPress
Хуки или события и фильтры — это основная событийная модель работы WordPress. Не забываем, что WooCommerce — это плагин для WordPress. Для внесения изменений в WooCommerce чаще всего используются фильтыы и события.
Хуки — это важно! От понимания того, как работаю хуки будет зависеть понимание всей дальнейшей информации как этого курса, так и любых других связанных с разработкой на WordPress и WooCommerce.
Небольшое видео, для понимя работы хуков
По теме хуков еще рекомендую почитать статьи:
- Как работают хуки в WordPress — сайт wp-kama.ru (основной спрвочник по WP на русском)
- Хуки: фильтры и действия. Подробное руководство — сайт misha.blog (много базовой информации по WP)
Как изменять (переопределять) файлы WooCommerce
Для безопасного изменения или переопределения файлов, отвечающих за вывод контента WooCommerce, достаточно скопировать файлы из папки /templates/
самого плагина в папку /woocommerce/
вашей темы или дочерней темы. Если в вашей дочерней теме нет папки /woocommerce/
, то создайте ее. Теперь для внесения изменений достаточно скопировать нужный файл.
Полный путь к папке шаблонов из корня сайта /wp-content/plugins/woocommerce/templates/
Пример: чтобы переопределить уведомление о заказе администратора, скопируйте: wp-content/plugins /woocommerce/templates/emails/admin-new-order.php
в wp-content/themes/yourtheme /woocommerce/emails/admin-new-order.php
Скопированный файл будет переопределять файл шаблона WooCommerce по умолчанию.
Предупреждение: не редактируйте эти файлы в самом ядре плагине, так как они перезаписываются в процессе обновления, и любые настройки будут потеряны.
Источник: Template structure & Overriding templates via a theme
к содержаниюПримеры использования хуков
Включение поддержки WooCommerce в теме
Поддержка в теме включается только на хуке after_setup_theme
. Это важно!
Базовое включение поддержки WooCommerce
/**
* @snippet Включение поддержки WooCommerce в теме
* @how-to-woo https://wpruse.ru/courses/how-to-change-woocommerce/
* @sourcecode https://wpruse.ru/?p=3439
* @testedwith WooCommerce 3.6
*/
add_action( 'after_setup_theme', 'mywoo_add_woocommerce_support' );
function mywoo_add_woocommerce_support() {
add_theme_support( 'woocommerce' );
}
Включение поддержки WooCommerce с передачей
/**
* @snippet Включение поддержки WooCommerce в теме с настройками
* @how-to-woo https://wpruse.ru/courses/how-to-change-woocommerce/
* @sourcecode https://wpruse.ru/?p=3439
* @testedwith WooCommerce 3.6
*/
add_action( 'after_setup_theme', 'mywoo_add_woocommerce_support' );
function mywoo_add_woocommerce_support() {
add_theme_support( 'woocommerce', array(
'thumbnail_image_width' => 150,
'single_image_width' => 300,
'product_grid' => array(
'default_rows' => 3,
'min_rows' => 2,
'max_rows' => 8,
'default_columns' => 4,
'min_columns' => 2,
'max_columns' => 5,
),
) );
}
Это установка значений по умолчанию
thumbnail_image_width
иsingle_image_width
— размер изображенийproduct_grid
— параметры сетки вывода товаров на страницах архивов
Подключение zoom, swipe, lightbox
/**
* @snippet Включение поддержки zoom, swipe, lightbox WooCommerce в теме
* @how-to-woo https://wpruse.ru/courses/how-to-change-woocommerce/
* @sourcecode https://wpruse.ru/?p=3439
* @testedwith WooCommerce 3.6
*/
add_theme_support( 'wc-product-gallery-zoom' );
add_theme_support( 'wc-product-gallery-lightbox' );
add_theme_support( 'wc-product-gallery-slider' );
к содержанию
Отключение стилей WooCommerce
/**
* @snippet Полное отключение стилей WooCommerce
* @how-to-woo https://wpruse.ru/courses/how-to-change-woocommerce/
* @sourcecode https://wpruse.ru/?p=3439
* @testedwith WooCommerce 3.6
*/
add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' );
/**
* @snippet Частичное отключение стилей
* @how-to-woo https://wpruse.ru/courses/how-to-change-woocommerce/
* @sourcecode https://wpruse.ru/?p=3439
* @testedwith WooCommerce 3.6
*/
add_filter( 'woocommerce_enqueue_styles', 'woocust_dequeue_styles' );
function woocust_dequeue_styles( $enqueue_styles ) {
unset( $enqueue_styles['woocommerce-general'] ); // Отключение основных стилей
unset( $enqueue_styles['woocommerce-layout'] ); // Отключение сетки
unset( $enqueue_styles['woocommerce-smallscreen'] ); // Отключение адаптивности
return $enqueue_styles;
}
к содержанию
Загрузка файлов CSS и JavaScript WooCommerce только на страницах магазина
/**
* @snippet Подключение стилей и скриптов только на страницах магазина
* @how-to-woo https://wpruse.ru/courses/how-to-change-woocommerce/
* @sourcecode https://wpruse.ru/?p=3439
* @testedwith WooCommerce 3.6
*/
add_action( 'wp_enqueue_scripts', 'woocust_manage_woocommerce_styles', 99 );
function woocust_manage_woocommerce_styles() {
if ( function_exists( 'is_woocommerce' ) ) {
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() && ! is_account_page() ) {
wp_dequeue_style( 'woocommerce-layout' );
wp_dequeue_style( 'woocommerce-smallscreen' );
wp_dequeue_style( 'woocommerce-general' );
wp_dequeue_style( 'evolution-woostyles' );
wp_dequeue_script( 'wc_price_slider' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-add-to-cart' );
wp_dequeue_script( 'wc-cart-fragments' );
wp_dequeue_script( 'wc-checkout' );
wp_dequeue_script( 'wc-add-to-cart-variation' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-cart' );
wp_dequeue_script( 'wc-chosen' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'prettyPhoto' );
wp_dequeue_script( 'prettyPhoto-init' );
wp_dequeue_script( 'jquery-blockui' );
wp_dequeue_script( 'jquery-placeholder' );
wp_dequeue_script( 'fancybox' );
wp_dequeue_script( 'jqueryui' );
}
}
}
к содержанию
Заключение
Это вводная часть. В ней разобрали какими инструментами пользоваться, как вносить код и некоторые другие вещи.
Как изменять WooCommerce через хуки смотрите в видео выше по таймкоду 8:32. С этого времени как раз начинаются примеры кода.
Удачи в изменении WooCommerce! Вопросы, предложения пишите в комментариях, и не забудьте расшарить эту статью в соцсетях! Вам это ничего не стоит, а меня будет мотивировать)