Suporte » Temas e templates » Filtrar conteúdo por categoria

  • Resolvido magskull

    (@magskull)


    Quero filtrar uma página apenas com uma categoria e mostrar o titulo, thumbnail e descrição.

    Nesse caso quero filtrar pela categoria destaque

    Como devo fazer para filtrar o conteudo, dentro dessa página de um tema:

    <?php
    /**
     * @package Mog
     * @since Mog 1.0
     */
    ?>
    
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    	<header class="entry-header">
    		<h1 class="entry-title"><a>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'mog' ), the_title_attribute( 'echo=0' ) ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
    
    		<?php if ( 'destaque' == get_post_category() ) : ?>
    
    		<?php endif; ?>
    	</header><!-- .entry-header -->
    
    	<?php if ( is_search() ) : // Only display Excerpts for Search ?>
    	<div class="entry-summary">
    		<?php the_excerpt(); ?>
    	</div><!-- .entry-summary -->
    	<?php else : ?>
    	<div class="entry-content">
    
    <?php if ( has_post_thumbnail() ) {
    // mostra a imagem destacada
    the_post_thumbnail();
    } else {
    // mostra outra coisa (imagem, texto, etc.)
    }
    ?>
    
    <?php the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'mog' ) ); ?>
    
    		<?php wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'mog' ), 'after' => '</div>' ) ); ?>
    	</div><!-- .entry-content -->
    	<?php endif; ?>
    
    	<footer class="entry-meta">
    		<?php if ( 'post' == get_post_type() ) : // Hide category and tag text for pages on Search ?>
    			<?php
    				/* translators: used between list items, there is a space after the comma */
    				$categories_list = get_the_category_list( __( ', ', 'mog' ) );
    				if ( $categories_list && mog_categorized_blog() ) :
    			?>
    			<span class="cat-links">
    				<?php printf( __( 'Posted in %1$s', 'mog' ), $categories_list ); ?>
    			</span>
    			<?php endif; // End if categories ?>
    
    			<?php
    				/* translators: used between list items, there is a space after the comma */
    				$tags_list = get_the_tag_list( '', __( ', ', 'mog' ) );
    				if ( $tags_list ) :
    			?>
    			<span class="sep"> | </span>
    			<span class="tags-links">
    				<?php printf( __( 'Tagged %1$s', 'mog' ), $tags_list ); ?>
    			</span>
    			<?php endif; // End if $tags_list ?>
    		<?php endif; // End if 'post' == get_post_type() ?>
    
    		<?php if ( ! post_password_required() && ( comments_open() || '0' != get_comments_number() ) ) : ?>
    		<span class="sep"> | </span>
    		<span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'mog' ), __( '1 Comment', 'mog' ), __( '% Comments', 'mog' ) ); ?></span>
    		<?php endif; ?>
    
    		<?php edit_post_link( __( 'Edit', 'mog' ), '<span class="sep"> | </span><span class="edit-link">', '</span>' ); ?>
    	</footer><!-- .entry-meta -->
    </article><!-- #post-<?php the_ID(); ?> -->

A visualizar 3 respostas - de 1 a 3 (de um total de 3)
  • if('destaque' == get_post_category()):
    Supondo que é dentro deste “IF” que pretendes que apareça a informação estás no caminho certo.

    get_post_category() Qual o conteúdo desta função?

    Caso pretendas verificar se a categoria é um destaque e essa seja a ÚNICA categoria do post podes utilizar o seguinte:

    <?php
    $category = get_the_category();
    if($category[0]->cat_name == 'destaque'):
    ?>

    Senão terás de comparar o “cat_name” com todas as categorias associadas ao post em causa.

    Thread Starter magskull

    (@magskull)

    Ótimo, obrigado pela resposta e de qualquer forma consegui resolver utilizando wp_query.

    Grande abraço.

    Victor Hugo Condrad Kurunczi d

    (@victor-hugo-condrad-kurunczi-d)

    Magskull pode passar na integra a sua solução?? por favor manda o link do resultado para podermos avaliar… obrigado.

A visualizar 3 respostas - de 1 a 3 (de um total de 3)
  • O tópico ‘Filtrar conteúdo por categoria’ está fechado a novas respostas.