Добавить Span вокруг заголовка товара в WooCommerce
Я настраиваю собственную тему для работы с WooCommerce. Одна из проблем, с которой я столкнулся - это добавление тега span вокруг заголовка товара на странице отдельного товара. Я разобрался, как добавить фильтр к методу the_title
, но, к сожалению, этот метод используется и в других местах, например, в alt-атрибуте изображения товара (что приводит к ошибкам).
Есть ли способ указать, чтобы изменять the_title
только когда он выводит основной заголовок на странице, а не когда используется в других местах, например, как атрибут изображения?
Вот что у меня есть на данный момент:
function my_product_title($title, $id)
{
if(in_the_loop() && is_product())
{
return '<span class="border">FooBar</span>';
}
return $title;
}
add_filter( 'the_title', 'my_product_title', 5, 2);
Разве не должен быть способ использовать фильтр woocommerce_product_title
? Я пытался это сделать, но безуспешно.
Пока что я знаю, что могу изменить файл шаблона single-product/title.php, но я бы предпочел достичь этого с помощью действий или фильтров.
Вот как это можно сделать:
Сначала нужно удалить стандартное действие вывода заголовка в WooCommerce, затем создать свою функцию для обработки заголовка и добавить это действие обратно, используя новую функцию.
<?php
// Удаляем стандартное действие вывода заголовка
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
// Добавляем свое действие с пользовательской функцией
add_action('woocommerce_single_product_summary', 'woocommerce_my_single_title', 5);
// Проверяем, существует ли уже функция (на случай, если она объявлена в другой теме/плагине)
if ( ! function_exists( 'woocommerce_my_single_title' ) ) {
function woocommerce_my_single_title() {
?>
<h1 itemprop="name" class="product_title entry-title"><span><?php the_title(); ?></span></h1>
<?php
}
}
?>
