Personalizzare Breadcrumb NavXT per WordPress

Hey, ho scritto questo articolo 8 anni e 8 mesi fa.
È molto probabile che nel frattempo le cose siano cambiate.

Se anche te, webdesigner/webdeveloper/webaddicted/blogger che utilizzi WordPress e in particolare con il plugin Breadcrumb NavXT per gestire le breadcrumb trails o briciole di pane o come-vi-piace-chiamarle, e ancora, che hai una pagina statica come pagina d’apertura del sito e un’altra per gli articoli, avete i permalink attivati con una struttura del tipo /%category%/%postname%/, e vuoi differenziare gli archivi giornalieri, mensili, annuali, forse, quest’articolo fa per te.

Ci tengo a precisare che è una funzione stupida e scritta in velocità, sicuramente c’è un modo (o più d’uno) più elegante per fare la stessa cosa.

Devi sapere che come separatore uso  » la mia pagina per gli articoli si chiama News, quindi dovrei adattare a tuo piacimento $my_sep, $page_name e $page_nice.

Nel file functions.php del vostro tema:

if (!function_exists("show_breadcrumbs")) {
    /* ==== CC BY-SA 3.0 ==== *\
    \* www.valeriovendrame.it */
    function show_breadcrumbs() {
        global $paged, $page;
        $my_page_n = $paged ? $paged : $page;
        $my_page_n = $my_page_n > 1 ? $my_page_n : false;
        $my_sep    = ' » ';
        if(function_exists('bcn_display')){
            if ( is_day() || is_month() || is_year() ) {
                $my_date['Y'] = get_the_time('Y');
                $my_date['m'] = get_the_time('m');
                $my_date['d'] = get_the_time('d');
            }
            echo "Sei in: ";  
            if ( is_front_page() ) {
                echo '<a href="'.home_url('/').'" title="'.esc_attr(get_bloginfo('name','display')).'" rel="home">'.get_bloginfo('name').'</a>';
            } else if ( is_home() ) {
                $page_name = "News";
                $page_nice = "news";
                $my_href = home_url('/').$page_nice."/";
                // $my_href = get_category_link(1);
                echo '<a href="'.$my_href.'" rel="'.$page_nice.'">'.$page_name.'</a>';
                echo $my_page_n ? $my_sep.'<a href="'.$my_href.'page/'.$my_page_n.'/" title="Pagina '.$my_page_n.'" rel="'.$page_nice.'-paged">'.$my_page_n.'</a>' : '';
            } else if ( is_day() ) {
                $my_href = get_day_link($my_date['Y'], $my_date['m'], $my_date['d']);
                printf( 'Archivio per il giorno &#39;<a href="'.$my_href.'" rel="archive-day">%s</a>&#39;' , get_the_date() );
                echo $my_page_n ? $my_sep.'<a href="'.$my_href.'page/'.$my_page_n.'/" title="Pagina '.$my_page_n.'" rel="archive-day-paged">'.$my_page_n.'</a>' : '';
            } else if ( is_month() ) {
                $my_href = get_month_link($my_date['Y'], $my_date['m']);
                printf( 'Archivio per il mese di &#39;<a href="'.$my_href.'" rel="archive-month">%s</a>&#39;', get_the_date( 'F Y' ) );
                echo $my_page_n ? $my_sep.'<a href="'.$my_href.'page/'.$my_page_n.'/" title="Pagina '.$my_page_n.'" rel="archive-month-paged">'.$my_page_n.'</a>' : '';
            } else if ( is_year() ) {
                $my_href = get_year_link($my_date['Y']);
                printf( 'Archivio per l&#39;anno &#39;<a href="'.$my_href.'" rel="archive-year">%s</a>&#39;', get_the_date( 'Y' ) );
                echo $my_page_n ? $my_sep.'<a href="'.$my_href.'page/'.$my_page_n.'/" title="Pagina '.$my_page_n.'" rel="archive-day-paged">'.$my_page_n.'</a>' : '';
            } else { bcn_display(); }
        }
    }
}

E poi, dove ti serve, basta richiamare la funzione show_breadcrumbs()

<?php show_breadcrumbs(); ?>

Ah sì, la pubblico con una licenza Creative Commons: Attribuzione – Condividi allo stesso modo 3.0 Italia (CC BY-SA 3.0), lascia il link a questo sito web (e se proprio proprio mi vuoi far felice, scegli qualcosa dalla mia wishlist →).

3 pensieri su “Personalizzare Breadcrumb NavXT per WordPress

  1. Ciao, spero tu mi possa aiutare :)
    C’è un modo per non visualizzare il nome dell’articolo corrente? Ti spiego, finché si tratta di una pagina, mi sta bene che il percorso visualizzato sia ad esempio:

    “home > chi siamo”

    ma dato che ho una caterva di articoli dal titolo abbastanza lungo, il cliente vorrebbe che non venisse visualizzato questo titolo. Anche perchè tutti gli articoli della categoria li ho elencati nella colonna laterale.
    Insomma, in questo modo è davvero troppo ridondante.

    Grazie in anticipo e buon lavoro!

  2. Ciao Terry, ho avuto un’illuminazione — facendo ovviamente altro. Funziona!

    Passo 1) da ImpostazioniBreadcrumb NavXTPost & Pages, fai in modo che Post Template e Post Template (Unlinked) inizino con <span class="removethiscrumb"> e finiscano con </span>

    Passo 2) aggiungi questo codice nel file functions.php del tema in uso:

    // Callback function to remove a custom breadcrumb trail
    // wrap with: <span class="removethiscrumb" />
    if ( function_exists('bcn_display') ) : # Breadcrumb NavXT required!
        /* ==== CC BY-SA 3.0 ==== *\
        \* www.valeriovendrame.it */
    	function remove_breadcrumb( $buffer ) {
    		$bcn = new bcn_breadcrumb_trail;
    		$bcn->opt = wp_parse_args( get_option('bcn_options'), $bcn->opt );
    		$sep = $bcn->opt['hseparator'];
    		$crumb  = array( '%'.$sep.'<span class="removethiscrumb">(.*?)</span>%', "%".$sep."<span class='removethiscrumb'>(.*?)</span>%" );
    		$buffer = preg_replace( $crumb, '<!--[crumbremoved]-->', $buffer );
    		return $buffer;
    	}
    	function remove_breadcrumb_start() { ob_start("remove_breadcrumb"); }
    	function remove_breadcrumb_end()   { ob_end_flush(); }
    	add_action( 'wp_head',   'remove_breadcrumb_start' );
    	add_action( 'wp_footer', 'remove_breadcrumb_end' );
    endif;

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.