Хуки действий WooCommerce и шаблоны переопределения

Я начал учиться создавать шаблоны с помощью WooCommerce и столкнулся с небольшой проблемой. Например, в php-файле content-single-product.php плагина Woocommerce у меня есть такие строки:

     <?php
        /**
         * woocommerce_single_product_summary hook.
         *
         * @hooked woocommerce_template_single_title - 5
         * @hooked woocommerce_template_single_rating - 10
         * @hooked woocommerce_template_single_price - 10
         * @hooked woocommerce_template_single_excerpt - 20
         * @hooked woocommerce_template_single_add_to_cart - 30
         * @hooked woocommerce_template_single_meta - 40
         * @hooked woocommerce_template_single_sharing - 50
         */
        do_action( 'woocommerce_single_product_summary' );

    ?>

И, например, когда я хочу отредактировать это (удалить некоторые поля и изменить структуру), я пытаюсь стереть строку:

do_action ('woocommerce_single_product_summary');

и после этого напишите так:

<?php
        /**
         * woocommerce_single_product_summary hook.
         *
         * @hooked woocommerce_template_single_title - 5
         * @hooked woocommerce_template_single_rating - 10
         * @hooked woocommerce_template_single_price - 10
         * @hooked woocommerce_template_single_excerpt - 20
         * @hooked woocommerce_template_single_add_to_cart - 30
         * @hooked woocommerce_template_single_meta - 40
         * @hooked woocommerce_template_single_sharing - 50
         */
        //do_action( 'woocommerce_single_product_summary' );
        do_action('woocommerce_template_single_title');
    ?>

Подскажите, пожалуйста, почему это не работает?

Как правильно так редактировать?

Спасибо


person Dmitry Shulga    schedule 21.08.2016    source источник
comment
@LoicTheAztec Ага! Большое спасибо! Ты действительно полезный человек! Заботиться!   -  person Dmitry Shulga    schedule 21.08.2016
comment
Спасибо ... Я тоже стараюсь. Приступая к работе с WooCommerce / WP, хуки и шаблоны не так просты. Увидимся ... Еще раз спасибо.   -  person LoicTheAztec    schedule 22.08.2016


Ответы (1)


Сначала в ссылке ниже вы узнаете, как правильно переопределить шаблоны woocommerce через тему (избегая редактирования шаблонов плагинов).

В первом фрагменте кода, как вы можете видеть для woocommerce_single_product_summary ловушки, вы упорядочили все различные шаблоны, которые @hooked находятся в этом месте ловушки. с функцией do_action() WordPress:

do_action( 'woocommerce_single_product_summary' ); 

Итак, в настроенном коде (2-й фрагмент кода) вы только что заменили обработчик на ярлык шаблона с привязкой (это НЕ ловушка) и НЕ будет работать как точка входа обработчик действия. См. Ссылки внизу этого ответа для списка действий и фильтров WooCommerce < strong> существующие хуки

Последствия: все остальные перехваченные шаблоны в коде закомментированного списка (начинающиеся с @hooked) будут отсутствовать , если вы замените перехватчик ярлыком шаблона .

Информацию о хуках, используемых в шаблонах, см. в этом полезном руководстве по визуальным хукам WooCommerce.


Пояснения (Как сделать):

КАК - Конкретный пример:

Вы хотите настроить woocommerce_template_single_title привязанный шаблон в woocommerce_single_product_summary обработчик.

 THE HOOK NAME:  woocommerce_single_product_summary hook.
   
 THE TEMPLATES HOOKED (+priority order number)  => corresponding template file name:    
— woocommerce_template_single_title       (5) => single-product/title.php
— woocommerce_template_single_rating     (10) => single-product/rating.php
— woocommerce_template_single_price      (10) => single-product/price.php
— woocommerce_template_single_excerpt    (20) => single-product/short-description.php
— woocommerce_template_single_add_to_cart(30) => single-product/add-to-cart/ (6 files depending on product type)
— woocommerce_template_single_meta       (40) => single-product/review-meta.php
— woocommerce_template_single_sharing -  (50) => single-product/share.php

Затем вам нужно будет отредактировать соответствующий woocommerce_single_product_summary хук title.php, расположенный в single-product (подпапка) < / em>… Наконец, это не так сложно, если мы разберемся с файлами структуры шаблона и крючками в этих шаблонах.

номер приоритета указывает порядок подключенных шаблонов: сначала меньше, в конце больше…

См. Также: Хуки и очередь их выполнения в Wordpress и Woocommerce


Другие способы:

Вы также можете использовать все существующие перехватчики шаблонов для целенаправленных изменений или настроек, используя настраиваемые функции, расположенные в файле function.php вашей активной дочерней темы (или темы) или любой другой файл плагина тоже.

Пример использования add_action() функции WordPress:

// define the woocommerce_single_product_summary callback function

function my_custom_action() { 
    echo '<p>This is my custom action function</p>';
};     
add_action( 'woocommerce_single_product_summary', 'my_custom_action', 15 ); 

Эта функция имеет приоритетный номер 15 и будет отображать строковый текст Это моя функция настраиваемого действия между product price и product short description

Необязательные аргументы этой перехваченной функции для этого перехвата:
• Заголовок шаблона (строка).
• Приоритет (int) .


Использованная литература:

person LoicTheAztec    schedule 21.08.2016
comment
Спасибо, сэр. это действительно полезно! - person Desper; 10.09.2019
comment
У меня есть одно сомнение в этом, как изменить порядковый номер приоритета? - person user9437856; 21.01.2021
comment
Я пробовал как эту функцию action_woocommerce_single_product_review () {} add_action ('woocommerce_single_product_summary', 'action_woocommerce_single_product_review', 1, 0); но он отображается под заголовком - person user9437856; 21.01.2021
comment
@ user9437856 Задайте новый вопрос, включая ваш код и пояснения, пожалуйста. - person LoicTheAztec; 21.01.2021