Come modificare il contenuto delle breadcrumbs di Woocommerce?
Voglio personalizzare le breadcrumbs direttamente da PHP. Alcune delle pagine sono generate dinamicamente e non esistono nel database, quindi devo inserirle automaticamente nelle breadcrumbs con qualche script PHP.
Non ho bisogno di modificare le impostazioni predefinite, come l'URL della homepage, i separatori, ecc... ma ho effettivamente bisogno di inserire manualmente alcune pagine nelle breadcrumbs. Ho provato con alcuni filtri e alcuni hook.
Ho letto la documentazione ma spiega solo come modificare le impostazioni predefinite.
Come posso modificare il contenuto effettivo delle breadcrumbs?
Ho provato questo:
add_filter( 'woocommerce_breadcrumb', 'change_breadcrumb' );
function change_breadcrumb( $defaults ) {
// Modifica il testo home delle breadcrumb da 'Home' a 'Appartamento'
//fai qualcosa
return $defaults;
}
Ma il //fai qualcosa
non viene mai eseguito. È come se quel filtro non venisse mai chiamato

Ciò è dovuto al fatto che il tuo filtro woocommerce_breadcrumb
non esiste nemmeno.
Questo filtro qui funziona ed estrae tutti gli elementi attualmente presenti nel breadcrumb (come array):
add_filter( 'woocommerce_get_breadcrumb', 'change_breadcrumb' );
function change_breadcrumb( $crumbs ) {
var_dump( $crumbs );
return $crumbs;
}
E questo filtro estrae il termine principale
(come oggetto).
add_filter( 'woocommerce_breadcrumb_main_term', 'change_breadcrumb' );
function change_breadcrumb( $main_term ) {
var_dump( $main_term );
return $main_term;
}
Il 'termine principale' è semplicemente il primo elemento restituito da questa funzione (riferimento):
$terms = wc_get_product_terms( $post->ID, 'product_cat', array( 'orderby' => 'parent', 'order' => 'DESC' ) )
Consulta il Riferimento agli Action e Filter Hook di woothemes per tutti gli hook e i filtri.
