Loop com categorias dinâmicas

4

Preciso criar um loop do WordPress que exiba todas as postagens associadas a uma categoria, mas preciso que essa categoria corresponda à página que estou visualizando.

Por exemplo: Digamos que eu tenha Categoria 1 com todas as postagens que eu quero exibir na Página 1. Quando eu for para a Página 2, eu quero que essa categoria mude para a Categoria 2 para que todas as postagens associadas sejam exibidas. .

Atual, meu loop é assim:

<?php query_posts('$cat_ID'); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
        <?php the_content(); ?>

    <?php endwhile; else: ?>

        <p>Sorry, this page does not exist</p>

    <?php endif; ?>
</div>

Obviamente, isso exibirá todas as postagens, independentemente da categoria. Preciso ter certeza de que a categoria mude, dependendo da página.

Alguma sugestão?

    
por Nathan Alvarez 19.04.2017 / 20:51

1 resposta

1

O código abaixo permite categorias para páginas. Um modelo de página de exemplo é fornecido, que percorre as categorias atribuídas à página e exibe as postagens de cada categoria.

Se você quiser limitar o usuário a selecionar apenas uma categoria, poderá usar uma solução como Taxonomy Single Term .

Associe a category taxonomia ao tipo% post page :

function wpse_page_category() {
    register_taxonomy_for_object_type( 'category', 'page' );    
}
add_action( 'init', 'wpse_page_category', 999  );

Exemplo de modelo de página bare bones (template-page-categories.php):

<?php
/**
 * Template Name: Page Categories
 *
 */

get_header(); ?>


<?php 
    // Standard loop for page content
    if ( have_posts() ) {
        while ( have_posts() ) {
            the_post();
            the_title( '<h1>', '</h1>' );
            the_content();
        }
    }


    // Get the category assigned to this page and list the posts in this category.
    // This code works when multiple categories have been assigned to the page.
    $page_categories = get_the_terms( get_the_ID(), 'category' );
    if ( $page_categories && ! is_wp_error( $page_categories ) ) {

        foreach ( $page_categories as $page_category ) {

            $posts_query = new WP_Query( [
                'post_type' => 'post',
                'cat' => $page_category->term_id,
            ] );


            if ( $posts_query->have_posts() ) {
                echo '<h2> Posts from the <em>' . esc_html( $page_category->name ) . '</em> category:</h2>';
                while ( $posts_query->have_posts() ) {
                    $posts_query->the_post();
                    the_title( '<h3>', '</h3>' );
                    //the_content();
                }
                echo '<hr>';
            }
        }
    }

?>
    
por Dave Romsey 20.04.2017 / 00:11