Wie bekomme ich den neuesten Beitrag aus einer Kategorie in WordPress?

Lesezeit: 3 Minuten

Benutzer-Avatar
Schnürsenkel1291

Ich gestalte die Kategorieseite. Ich habe eine Schleife, die die untergeordneten Kategorien für die aktuelle Kategorie anzeigt. Für jede untergeordnete Kategorie möchte ich einen Link zum neuesten Artikel anzeigen. Derzeit ist der Link für alle untergeordneten Kategorien gleich, auch wenn der angezeigte Artikel nicht in dieser Kategorie ist. Was mache ich falsch?

<?php 
     $cat_id = get_query_var('cat');
     $categories = get_categories(array( 'parent' => $cat_id));
            if(count($categories) > 0):
                foreach($categories as $cat): 
                    $args = array(
                        'numberposts' => 1,
                        'offset' => 0,
                        'category' => $cat->cat_ID,
                        'orderby' => 'ID',
                        'order' => 'DESC',
                        'post_type' => 'post',
                        'post_status' => 'publish',
                        'suppress_filters' => true );

                        $the_query = new WP_Query( $args ); 
                        $the_query->the_post();
                        if ( $the_query->have_posts() ) : 
                            while ( $the_query->have_posts() ) : $the_query->the_post(); 
                                $recent['title'] = get_the_title();
                                $recent['id'] = get_the_ID();
                                wp_reset_postdata();
                            endwhile;
                        endif;
                        wp_reset_postdata(); ?>


                <div class="media category-list">
                    <div class="media-body">
                        <div class="details">
                            <h3><a href="https://stackoverflow.com/questions/35532889/<?php%20echo%20get_category_link($cat->cat_ID);%20?>"><?php echo $cat->name; ?></a></h3>
                            <p><?php echo $cat->description; ?></p>
                        </div>
                        <dl>
                            <dt>Article Total:</dt><dd><?php echo $cat->count; ?></dd>
                            <dt>Last Article:</dt><dd><a href="<?php%20echo%20get_permalink($recent["id"]); ?>"><?php echo substr($recent["title"], 0, 48).'...'; ?></a></dd>
                        </dl>
                    </div>
                </div>
                <?php endforeach;
                endif; ?>

Geben Sie hier die Bildbeschreibung ein

Sieht so aus, als würden Sie verwenden get_posts Argumente ein WP_Query.

  1. category und numberposts sind keine gültigen Argumente für WP_Query
  2. Beides gehört dazu get_posts und intern umgewandelt in cat und posts_per_page
  3. Also, wenn Sie diese Argumente weitergeben WP_Query es funktioniert nicht. Aber wenn du passierst WP_Query Argumente ein get_posts Es klappt 😉

Die aktualisierte Argumentstruktur ist also

$args = array(
    'posts_per_page' => 1,
    'offset' => 0,
    'cat' => $cat->cat_ID,
    'orderby' => 'ID',
    'order' => 'DESC',
    'post_type' => 'post',
    'post_status' => 'publish',
    'suppress_filters' => true 
);

Bitte aktualisieren Sie auch Ihre Abfrage damit

$the_query = new WP_Query( $args ); 
//$the_query->the_post();
if ( $the_query->have_posts() ) : 
    while ( $the_query->have_posts() ) : $the_query->the_post(); 
        $recent['title'] = get_the_title();
        $recent['id'] = get_the_ID();
//        wp_reset_postdata();
    endwhile;
endif;
wp_reset_postdata(); 

the_post sollte nur einmal aufgerufen werden und danach, wenn Sie sicher sind, dass die Abfrage Beiträge enthält.
wp_reset_postdata Halten Sie die Daten für die gesamte Abfrage. Sie müssen dies also am Ende der While-Schleife tun, nicht innerhalb der While-Schleife.

1010220cookie-checkWie bekomme ich den neuesten Beitrag aus einer Kategorie in WordPress?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy