Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

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

Тема в разделе "Вопросы, советы и доработки.", создана пользователем Roman52, 11 мар 2016.

  1. Roman52

    Roman52

    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    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>';
        }
    }
     
    Последнее редактирование: 11 мар 2016
  2. Stork.71

    Stork.71 Местный

    Сообщения:
    1.043
    Симпатии:
    254
    Баллы:
    83
    могу конечно ошибаться, но вроде бы достаточно прописать
    PHP:
        function woocommerce_template_loop_product_title_1() {
            echo 
    '<h4>' get_the_title() . '</h4>';
        }
    Родная функция будет подменена, так как есть конструкция if ( ! function_exists( ) )
     
    • Нравится Нравится x 1
  3. Roman52

    Roman52

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

    searchingman Местный

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

    Roman52

    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Спасибо! Вы мне ужасно помогли :)
     
  6. D&B

    D&B Администратор Команда форума Местный

    Сообщения:
    3.273
    Симпатии:
    724
    Баллы:
    113
    Ужасно помогать - это мы завсегда :)