Obtener el nombre de la categoría desde un loop personalizado y mostrarlo una vez

11 dic 2014, 13:50:22
Vistas: 22K
Votos: 1

Tengo una página principal de revista que se actualiza con cada número, y la página principal muestra los posts actuales del número que están fijados (sticky). Por ejemplo, este mes todos los posts están en una categoría llamada 'Número 01' y el próximo mes, crearé 'Número 02' que reemplazará los posts fijados del 'Número 01' en la página principal.

Estoy tratando de mostrar el nombre de la categoría de los posts que se obtienen en la consulta, pero no puedo hacerlo fuera del loop (solo quiero mostrarlo una vez en la parte superior antes de que comience el loop).

Aquí está mi consulta para obtener los posts fijados y un intento de mostrar el nombre de la categoría que no me funciona...

<?php // Obtener Artículos del Número Actual
    $currentissueposts = array(
        'posts_per_page'      => 6,
        'post__in'            => get_option( 'sticky_posts' ),
        'ignore_sticky_posts' => 1
        );

        $currentissue = new WP_Query( $currentissueposts ); 

        if ( $currentissue->have_posts() ) : ?>
            <div class="the-header">
                <h3><?php the_category(); ?></h3>
            </div><!-- #the-header -->  
        <?php while( $currentissue->have_posts() ) : $currentissue->the_post(); ?>
                <a href="<?php the_permalink() ?>" rel="bookmark">
                <ol class="current-index-container">
                    <li class="the-title"><?php the_title(); ?></li>
                    <li class="the-author"><?php the_field('sub_head_1'); ?></li>
                    <li class="the-subtitle"><?php the_field('sub_head_2'); ?></li>
                </ol></a>
        <?php endwhile; 
        wp_reset_query();
        endif; ?>

He revisado la documentación sobre single_post_title y get_the_category pero no puedo hacer que funcione solo una vez. ¡Cualquier ayuda es apreciada!

0
Todas las respuestas a la pregunta 2
2

Aquí hay una idea. Nota: esto solo funcionará si todas las publicaciones están en la categoría deseada y si todas las publicaciones tienen solo una categoría.

Las publicaciones se devuelven en un array al que puedes acceder a través de:

$currentissue->posts

Con esto en mente, puedes obtener el ID de la primera publicación de la siguiente manera:

$currentissue->posts[0]->ID

Ahora, puedes agregar eso a una variable:

$id = $currentissue->posts[0]->ID

Ahora puedes usar get_the_category para recuperar la categoría a la que pertenece esta publicación. Recuerda, esta será la categoría a la que pertenecen todas las publicaciones según tu pregunta.

Algo como esto funcionaría justo fuera de tu bucle, justo dentro de tu declaración if:

$category = get_the_category( $id );
echo $category[0]->cat_name;
11 dic 2014 14:36:58
Comentarios

Gracias Pieter, eso parece funcionar. Entonces solo está llamando a la categoría del primer post y mostrándola.

antonanton antonanton
11 dic 2014 14:51:47

Sí, exactamente. El razonamiento aquí, como dije, es que todos los posts tienen la misma categoría. Debería mostrar Issue 3 en el siguiente número si el número actual es el 2 :-)

Pieter Goosen Pieter Goosen
11 dic 2014 14:54:04
0
    <?php print get_the_category(get_the_ID())[0]->name; ?>

get_the_category() - obtiene un array de publicaciones con información sobre las categorías. get_the_category(get_the_ID()) - obtiene un array que contiene información sobre la categoría solo para una publicación específica. get_the_category(get_the_ID())[0] - obtiene el primer resultado del array, que es un objeto

8 oct 2018 15:02:44