Есть два способа сделать это - с помощью хуков или переопределив файл шаблона WooCommerce в вашей дочерней теме. Сначала давайте найдем код.
Файл, который вы ищете, находится в плагине WooCommerce:
templates/content-product.php
В строке 5 этого файла написано:
This template can be overridden by copying it to yourtheme/woocommerce/content-product.php.
Давайте сначала посмотрим на файл переопределения.
Метод 1 - Переопределение файла
Скопируйте templates/content-product.php
из плагина WooCommerce в woocommerce/content-product.php
внутри вашей дочерней темы. Этот файл теперь переопределяет шаблон в плагине. Мы вносим необходимые изменения в этот новый файл.
Заголовок в файле шаблона content-product.php
по умолчанию выводится так:
echo '<h2 class="' . esc_attr( apply_filters( 'woocommerce_product_loop_title_classes', 'woocommerce-loop-product__title' ) ) . '">' . get_the_title() . '</h2>';
, который определен в файле WooCommerce includes/wc-template-functions.php
.
Если вы ищете woocommerce_template_loop_product_title (), вы увидите определенную функцию:
if ( ! function_exists( 'woocommerce_template_loop_product_title' ) ) {
/**
* Show the product title in the product loop. By default this is an H2.
*/
function woocommerce_template_loop_product_title() {
echo '<h2 class="' . esc_attr( apply_filters( 'woocommerce_product_loop_title_classes', 'woocommerce-loop-product__title' ) ) . '">' . get_the_title() . '</h2>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
}
Эта строка кода в файле content-product.php:
do_action( 'woocommerce_shop_loop_item_title' );
вызывает функцию woocommerce_template_loop_product_title
, которую мы хотим переопределить. Итак, давайте закомментируем эту строку и заменим ее следующим кодом:
// do_action( 'woocommerce_shop_loop_item_title' );
echo '<h6 class="' . esc_attr( apply_filters( 'woocommerce_product_loop_title_classes', 'woocommerce-loop-product__title' ) ) . '">' . get_the_title() . '</h6>';
Simple!
Метод 2 - Использование зацепок
Другойможно отсоединить функцию woocommerce_template_loop_product_title
от хука woocommerce_shop_loop_item_title
и заменить ее нашей собственной функцией. Вы можете сделать это, добавив следующий код в ваш файл functions.php:
remove_action( 'woocommerce_shop_loop_item_title','woocommerce_template_loop_product_title', 10 );
add_action('woocommerce_shop_loop_item_title', 'soChangeProductsTitle', 10 );
function soChangeProductsTitle() {
echo '<h6 class="' . esc_attr( apply_filters( 'woocommerce_product_loop_title_classes', 'woocommerce-loop-product__title' ) ) . '">' . get_the_title() . '</h6>';
}