• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Переопределить функцию в wc-template-functions.php

Image CMS

Roman52

Новичок
#1
Приветствую! Как правильно переопределить функцию в файле plugins\woocommerce\includes\wc-template-functions.php ?

Я уже скопировал файлы plugins\woocommerce\templates в папку со своей темой и редактирую их там, но мне нужно к примеру изменить вывод товаров в цикле (выводить другими тегами).
То есть к примеру есть функция в plugins\woocommerce\includes\wc-template-functions.php
PHP:
if (  ! function_exists( 'woocommerce_template_loop_product_title' ) ) {

    /**
    * Show the product title in the product loop. By default this is an H3.
    */
    function woocommerce_template_loop_product_title() {
        echo '<h3>' . get_the_title() . '</h3>';
    }
}
я хочу, чтобы у меня выводилось в h4 например - мне нужно создать такую же функцию (только выводить в h4) в function.php моей темы, или сделать в функциях моей темы:

PHP:
remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
add_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title_1', 10 );

if (  ! function_exists( 'woocommerce_template_loop_product_title_1' ) ) {
    /**
    * Show the product title in the product loop. By default this is an H3.
    */
    function woocommerce_template_loop_product_title_1() {
        echo '<h4>' . get_the_title() . '</h4>';
    }
}
 
Последнее редактирование:

Stork.71

Гуру
Местный
#2
могу конечно ошибаться, но вроде бы достаточно прописать
PHP:
    function woocommerce_template_loop_product_title_1() {
        echo '<h4>' . get_the_title() . '</h4>';
    }
Родная функция будет подменена, так как есть конструкция if ( ! function_exists( ) )
 

Roman52

Новичок
#3
Да, когда прописываю
PHP:
function woocommerce_template_loop_product_title() {
        echo '<h4>' . get_the_title() . '</h4>';
    }
только без _1 в конце, то есть по сути переписываю уже существующую функцию - то все работает. Просто задался вопросом, правильно ли это?
 

searchingman

Гуру
Местный
#4
Приветствую! Как правильно переопределить функцию в файле plugins\woocommerce\includes\wc-template-functions.php ?

Я уже скопировал файлы plugins\woocommerce\templates в папку со своей темой и редактирую их там, но мне нужно к примеру изменить вывод товаров в цикле (выводить другими тегами).
То есть к примеру есть функция в plugins\woocommerce\includes\wc-template-functions.php
PHP:
if (  ! function_exists( 'woocommerce_template_loop_product_title' ) ) {

    /**
    * Show the product title in the product loop. By default this is an H3.
    */
    function woocommerce_template_loop_product_title() {
        echo '<h3>' . get_the_title() . '</h3>';
    }
}
я хочу, чтобы у меня выводилось в h4 например - мне нужно создать такую же функцию (только выводить в h4) в function.php моей темы, или сделать в функциях моей темы:

PHP:
remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
add_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title_1', 10 );

if (  ! function_exists( 'woocommerce_template_loop_product_title_1' ) ) {
    /**
    * Show the product title in the product loop. By default this is an H3.
    */
    function woocommerce_template_loop_product_title_1() {
        echo '<h4>' . get_the_title() . '</h4>';
    }
}
Оба способа правильные, но используются для разных целей.
1. Если хотите изменить содержимое функций без всяких условий.
2. Если хотите изменить содержимое функций в зависимости от применения ее в разных местах. Для этого используются хуки, которые могут подключать функцию в разных местах. (хук1, хук2, ...).
В этом случае можно избирательно для хук1 подключить свою, но для хук2 - оставить старый вариант.
 

Roman52

Новичок
#5
Оба способа правильные, но используются для разных целей.
1. Если хотите изменить содержимое функций без всяких условий.
2. Если хотите изменить содержимое функций в зависимости от применения ее в разных местах. Для этого используются хуки, которые могут подключать функцию в разных местах. (хук1, хук2, ...).
В этом случае можно избирательно для хук1 подключить свою, но для хук2 - оставить старый вариант.
Спасибо! Вы мне ужасно помогли :)
 

RuslanLi

Новичок
#7
Здравствуйте!
Смотрите какой парадокс, http://joxi.ru/vAWyLGOF1XWpwm заменил тег => сработал на странице shop которую woocommerce создаёт автоматически http://joxi.ru/a2XOK0nc1KbNym => но на главной при добавлении товара по средством шорткодом [products ids=»32, 46, 47, 48, 49, 50, 407″ orderby=»menu_order»] полуается так http://joxi.ru/GrqyvqGFQJa10r Почему так?
 
Сверху Снизу