WooCommerce - Sovrascrivere action hook
All'interno del file template di WooCommerce "content-product.php", sto cercando di sovrascrivere il seguente action hook:
/**
* woocommerce_shop_loop_item_title hook
*
* @hooked woocommerce_template_loop_product_title - 10
*/
do_action( 'woocommerce_shop_loop_item_title' );
Per sovrascrivere questo hook, ho aggiunto quanto segue al mio file 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>';
}
Questo aggiunge solo del codice all'hook. Come posso sostituire completamente l'hook con il mio codice? Ho controllato la documentazione di WooCommerce, ma non fornisce molte informazioni a riguardo.

In realtà è piuttosto semplice modificare il titolo in content-product.php, ma non potrai farlo con un hook. Verso l'inizio del file, dovresti vedere questa riga:
Override this template by copying it to yourtheme/woocommerce/content-product.php
Tutto ciò che devi fare è copiare il file nella directory sopra indicata, sostituendo "yourtheme" con il nome effettivo della cartella del tuo tema, e apportare le modifiche desiderate al nuovo file.
Un po' più di contesto sugli hook
Il titolo nel file template content-product.php di default viene visualizzato così, come definito in wc-template-functions.php se cerchi woocommerce_template_loop_product_title() echo il titolo qui sotto:
<h3><?php the_title(); ?></h3>
Per modificare il titolo con un hook, dovresti cambiare la riga sopra in questo modo, ma non puoi farlo senza modificare il file wc-template-functions.php. Quindi quello che puoi fare è commentare l'azione nel file content-product.php:
//do_action( 'woocommerce_shop_loop_item_title' );
e poi aggiungere la riga qui sotto:
?><h3><?php echo apply_filters( 'my_filter_name', get_the_title() ); ?></h3><?php
quindi la versione salvata apparirà così:
//do_action( 'woocommerce_shop_loop_item_title' );
?><h3><?php echo apply_filters( 'my_filter_name', get_the_title() ); ?></h3><?php
Poi, dovrai aggiungere quanto segue al file functions.php del tuo tema, che passerà il contenuto di get_the_title() al parametro $title, che potrai modificare come preferisci, ma nel caso qui sotto cambierà ogni titolo in "Titolo Personalizzato":
add_filter( 'my_filter_name', 'my_custom_function' );
function my_custom_function( $title ) {
return 'Titolo Personalizzato';
}
Per maggiori informazioni, consulta i seguenti link:

in WordPress, non puoi semplicemente "sovrascrivere" un hook (questo funziona solo per le funzioni pluggable)
ma puoi aggiungere una nuova funzione allo stesso hook e rimuovere un'azione.
prova qualcosa del genere:
add_action("init", function () {
// rimozione dell'hook di woocommerce
remove_action('woocommerce_shop_loop_item_title', 'change_product_title');
});
// aggiungi una nuova funzione all'hook
add_action("woocommerce_shop_loop_item_title", function () {
echo "la mia nuova azione";
});
