Obține numele categoriei dintr-un loop personalizat și afișează-l o singură dată

11 dec. 2014, 13:50:22
Vizualizări: 22K
Voturi: 1

Am o pagină de front-page pentru o revistă care se actualizează cu fiecare ediție, iar pagina principală afișează postările curente ale ediției care sunt fixate (sticky). De exemplu, în această lună toate postările sunt într-o categorie numită 'Ediția 01' și luna viitoare, voi crea 'Ediția 02' care va înlocui postările fixate din 'Ediția 01' pe pagina principală.

Încerc să afișez numele categoriei postărilor care sunt extrase în query dar nu reușesc să fac acest lucru în afara loop-ului (vreau să-l afișez o singură dată la început înainte ca loop-ul să înceapă).

Aici este query-ul meu pentru a apela postările fixate și o încercare de a afișa numele categoriei care nu funcționează pentru mine...

<?php // Obține Articolele Ediției Curente
    $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; ?>

Am verificat documentația în ceea ce privește single_post_title și get_the_category dar nu reușesc să le fac să funcționeze o singură dată. Orice ajutor este apreciat!

0
Toate răspunsurile la întrebare 2
2

Iată o idee. Rețineți, acest lucru va funcționa doar dacă toate articolele sunt în categoria dorită și dacă toate articolele au doar o singură categorie.

Articolele sunt returnate într-un array la care puteți accesa prin

$currentissue->posts 

Cu aceasta în minte, puteți obține ID-ul primului articol astfel:

$currentissue->posts[0]->ID

Acum, puteți adăuga acest lucru într-o variabilă

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

Acum puteți folosi get_the_category pentru a prelua categoria căreia îi aparține acest articol. Amintiți-vă, aceasta va fi categoria căreia îi aparțin toate articolele conform întrebării dumneavoastră

Ceva de genul acesta ar funcționa chiar în afara buclei dumneavoastră, chiar în interiorul instrucțiunii if

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

Mulțumesc Pieter, pare să funcționeze. Deci doar apelează categoria primului articol și o afișează.

antonanton antonanton
11 dec. 2014 14:51:47

Da, exact. Raționamentul aici, după cum s-a spus, este că toate articolele au aceeași categorie. Ar trebui să afișeze Numărul 3 la următorul număr dacă numărul curent este 2 :-)

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

get_the_category() - obține un array de postări cu informații despre categorii. get_the_category(get_the_ID()) - obține un array ce conține informații despre categoria pentru o anumită postare. get_the_category(get_the_ID())[0] - obține primul rezultat din array, care este un obiect

8 oct. 2018 15:02:44