Intereting Posts

WooCommerce – Завершить действие hook

В файле шаблона WooCommerce «content-product.php» я пытаюсь перезаписать следующий крючок действия:

/** * woocommerce_shop_loop_item_title hook * * @hooked woocommerce_template_loop_product_title - 10 */ do_action( 'woocommerce_shop_loop_item_title' ); 

Чтобы перезаписать этот крючок, я добавил в свой файл functions.php следующее:

add_action ('woocommerce_shop_loop_item_title', 'change_product_title');

 function change_product_title() { echo'<header class="entry-header"><h1 class="entry-title">'.get_the_title().'</h1></header>'; } 

Это только добавляет к крюку. Как я могу полностью заменить крючок своим собственным кодом? Я проверил документацию WooCommerce, но это не дает вам многого для продолжения.

На самом деле довольно просто изменить заголовок в content-product.php, но вы не сможете сделать это с помощью крючка. В верхней части файла вы должны увидеть эту строку:

 Override this template by copying it to yourtheme/woocommerce/content-product.php 

Все, что вам нужно сделать, это скопировать файл в указанный выше каталог, заменив «yourtheme» на фактическое имя папки вашей темы и внести нужные изменения в новый файл.

Еще немного фона на крючках

Заголовок в файле шаблона content-product.php выводится следующим образом, который определяется в wc-template-functions.php, если вы ищете woocommerce_template_loop_product_title (), он отображает следующий заголовок:

 <h3><?php the_title(); ?></h3> 

Чтобы изменить заголовок с помощью крючка, вам нужно изменить приведенную выше строку, но вы не можете сделать это без изменения файла wc-template-functions.php. Итак, что вы можете сделать, это закомментировать действие в файле content-product.php:

 //do_action( 'woocommerce_shop_loop_item_title' ); 

а затем добавьте следующую строку:

 ?><h3><?php echo apply_filters( 'my_filter_name', get_the_title() ); ?></h3><?php 

поэтому сохраненная версия выглядит так:

 //do_action( 'woocommerce_shop_loop_item_title' ); ?><h3><?php echo apply_filters( 'my_filter_name', get_the_title() ); ?></h3><?php 

Затем вам нужно добавить следующее в файл functions.php вашей темы, который передаст содержимое get_the_title () в параметр $ title, который вы можете изменить любым способом, но в следующем случае изменится каждый заголовок сказать «Пользовательское название»:

 add_filter( 'my_filter_name', 'my_custom_function' ); function my_custom_function( $title ) { return 'Custom Title'; } 

Для получения дополнительной информации см. Следующее:

http://codex.wordpress.org/Function_Reference/apply_filters

http://codex.wordpress.org/Function_Reference/add_filter

в WordPress вы не можете просто переписать крючок (это работает только для подключаемых функций)

но вы можете добавить новую привязку к тому же крюку и удалить действие.

попробуйте что-то вроде этого:

 add_action("init", function () { // removing the woocommerce hook remove_action('woocommerce_shop_loop_item_title', 'change_product_title'); }); // add a new fonction to the hook add_action("woocommerce_shop_loop_item_title", function () { echo "my new action"; });