Suporte » Problemas no funcionamento » Hierarquia de categorias e breadcrumbs

  • Ando às voltas com isto e não estou a ver como resolver.

    Tenho um artigo que entra em duas categorias independentes, digamos Cursos e Cidades.

    Quando acedo a esse artigo, o trilho de breadcrumbs vai sempre buscar uma dessas categorias. Como é que eu faço com que seja a outra categoria, que é a que pretendo que seja mostrada nas breadcrumbs?

    Já pesquisei e não consegui perceber.

    As breadcrumbs são servidas pelo próprio tema.

    Exemplo do single.php:

    <?php if(opt('breadcrumbs')=='no') { ?>
    <?php get_breadcrumbs(); ?>
    <?php } ?>

    E no functions.php:

    /**
     *  Breadcrumb
     */
    function get_breadcrumbs()
    {
    	global $wp_query;
    
    	if ( !is_home() ){
    
    		// Start the DIV
    		echo '<div class="breadcrumb">';
    		// Start the UL
    		echo '<ul>';
    		// Add the Home link
    		echo '<li><a href="'. get_settings('home') .'">'. get_bloginfo('name') .'</a></li>';
    
    		if ( is_category() )
    		{
    			$catTitle = single_cat_title( "", false );
    			$cat = get_cat_ID( $catTitle );
    			echo "<li> <span>»</span> ". get_category_parents( $cat, TRUE, " <span>»</span>  " ) ."</li>";
    		}
    		elseif ( is_archive() && !is_category() )
    		{
    			echo "<li> <span>»</span> Archives</li>";
    		}
    		elseif ( is_search() ) {
    
    			echo "<li> <span>»</span> Search Results</li>";
    		}
    		elseif ( is_404() )
    		{
    			echo "<li> <span>»</span> 404 Not Found</li>";
    		}
    		elseif ( is_single() )
    		{
    			$category = get_the_category();
    			$category_id = get_cat_ID( $category[0]->cat_name );
    
    			echo '<li> <span>»</span> '. get_category_parents( $category_id, TRUE, " <span>»</span>  " );
    			echo the_title('','', FALSE) ."</li>";
    		}
    		elseif ( is_page() )
    		{
    			$post = $wp_query->get_queried_object();
    
    			if ( $post->post_parent == 0 ){
    
    				echo "<li> <span>»</span> ".the_title('','', FALSE)."</li>";
    
    			} else {
    				$title = the_title('','', FALSE);
    				$ancestors = array_reverse( get_post_ancestors( $post->ID ) );
    				array_push($ancestors, $post->ID);
    
    				foreach ( $ancestors as $ancestor ){
    					if( $ancestor != end($ancestors) ){
    						echo '<li> <span>»</span> <a href="'. get_permalink($ancestor) .'">'. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</a></li>';
    					} else {
    						echo '<li> <span>»</span> '. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</li>';
    					}
    				}
    			}
    		}
    
    		// End the UL
    		echo "</ul>";
    		// End the DIV
    		echo '</div>';
    	}
    }
A visualizar 3 respostas - de 1 a 3 (de um total de 3)
  • Thread Starter Alvaro Gois dos Santos

    (@alvarogois)

    OK. O código ficou um bocado esquisito. A ver se resulta assim:

    http://textsnip.com/ae5d4f/php

    Myst1010

    (@myst1010)

    Por padrão a categoria amostrada sempre será a que está com o ID com número mais baixo, neste caso não tenho certeza, mas é possível que se vc excluir esta categoria e depois criar ela novamente pode ser que ela ganhe um ID maior e comece a aparecer.

    Thread Starter Alvaro Gois dos Santos

    (@alvarogois)

    Acho que já tentei isso e não resultou… Mas vou testar novamente. Obrigado.

    Em todo o caso, deveria haver uma forma de controlar isso, não?

A visualizar 3 respostas - de 1 a 3 (de um total de 3)
  • O tópico ‘Hierarquia de categorias e breadcrumbs’ está fechado a novas respostas.