Измените woocommerce-loop-product__title со H2 на H6 - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь изменить woocommerce "woocommerce-loop-product__title" с H2 на H6, но у меня возникли некоторые проблемы с поиском функции.

Кто-нибудь может посоветовать расположение файлов плагина или еще лучше, как переопределить его в файле themes.php themes?

Спасибо

1 Ответ

2 голосов
/ 01 ноября 2019

Есть два способа сделать это - с помощью хуков или переопределив файл шаблона 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>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...