Bucle con categorías dinámicas

4

Necesito crear un bucle de WordPress que muestre todas las publicaciones asociadas a una categoría, pero necesito que esa categoría coincida con la página que esté viendo.

Por ejemplo: Digamos que tengo la Categoría 1 con todas las publicaciones que quiero que se muestren en la Página 1. Cuando voy a la Página 2, quiero que esa categoría cambie a la Categoría 2 para que todas las publicaciones asociadas se muestren en la Página 2 .

Actual, mi bucle se ve así:

<?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, esto mostrará todas las publicaciones independientemente de la categoría. Necesito asegurarme de que tengo el cambio de categoría según la página.

¿Alguna sugerencia?

    
pregunta Nathan Alvarez 19.04.2017 - 20:51

1 respuesta

1

El siguiente código habilita categorías para páginas. Se proporciona una plantilla de página de ejemplo que recorre las categorías asignadas a la página y muestra las publicaciones para cada categoría.

Si desea limitar al usuario a seleccionar solo una categoría, puede usar una solución como Taxonomy Single Term .

Asocie la taxonomía category con el tipo de publicación page :

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

Ejemplo de plantilla de página esquivada (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>';
            }
        }
    }

?>
    
respondido por el Dave Romsey 20.04.2017 - 00:11

Lea otras preguntas en las etiquetas