Ottenere il nome della categoria da un loop personalizzato e visualizzarlo una sola volta

11 dic 2014, 13:50:22
Visualizzazioni: 22K
Voti: 1

Ho una pagina principale di una rivista che si aggiorna con ogni numero, e la prima pagina mostra i post in evidenza del numero corrente. Per esempio, questo mese tutti i post sono in una categoria chiamata 'Numero 01' e il prossimo mese, creerò 'Numero 02' che sostituirà i post in evidenza del 'Numero 01' sulla prima pagina.

Sto cercando di mostrare il nome della categoria dei post estratti nella query ma non riesco a farlo fuori dal loop (voglio mostrarlo solo una volta all'inizio prima che il loop inizi).

Ecco la mia query per richiamare i post in evidenza e un tentativo di mostrare il nome della categoria che non funziona...

<?php // Ottieni gli Articoli del Numero Corrente
    $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; ?>

Ho esaminato la documentazione riguardo single_post_title e get_the_category ma non riesco a farlo funzionare una sola volta. Qualsiasi aiuto è molto apprezzato!

0
Tutte le risposte alla domanda 2
2

Ecco un'idea. Nota: questo funzionerà solo se tutti i post appartengono alla categoria desiderata e se tutti i post hanno una sola categoria.

I post vengono restituiti in un array a cui puoi accedere tramite:

$currentissue->posts 

Con questo in mente, puoi ottenere l'ID del primo post nel seguente modo:

$currentissue->posts[0]->ID

Ora, puoi assegnarlo a una variabile:

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

Ora puoi usare get_the_category per recuperare la categoria a cui appartiene questo post. Ricorda, questa sarà la categoria a cui appartengono tutti i post secondo la tua domanda.

Qualcosa come questo potrebbe funzionare appena fuori dal tuo ciclo, proprio all'interno del tuo statement if:

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

Grazie Pieter, sembra funzionare. Quindi sta semplicemente chiamando la categoria del primo post e la sta visualizzando.

antonanton antonanton
11 dic 2014 14:51:47

Sì, esattamente. Il ragionamento qui, come detto, è che tutti i post hanno la stessa categoria. Dovrebbe mostrare Numero 3 sul prossimo numero se quello attuale è il numero 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() - ottiene un array di post con informazioni sulle categorie. get_the_category(get_the_ID()) - ottiene un array contenente informazioni sulla categoria solo per un post specifico. get_the_category(get_the_ID())[0] - ottiene il primo risultato dall'array, che è un oggetto

8 ott 2018 15:02:44