it-swarm.com.de

Leeren Sie den Auszug mit wp_get_recent_posts

Ich habe diesen einfachen Shortcode, um die letzten Beiträge mit dem Titel anzuzeigen und mit Ausnahme von:

add_shortcode('latest3', function(){
    $recent_posts = wp_get_recent_posts(
            array(
                'numberposts'   => 3,
                'orderby'       => 'post_date',
                'order'         => 'DESC',
                'post_type'     => 'post',
                'post_status'   => 'publish'
            ), ARRAY_A);

    $output = '<h2>Latest posts</h2>';
    foreach ( $recent_posts as $recent ) {
        $output .= '<h3>'.$recent["post_title"].'</h3>';
        $output .= $recent["post_excerpt"];
    }
    return $output;
});

Aber aus irgendeinem Grund ist die Ausgabe des Auszugs leer. print_r($recents) zeigt an, dass es zwar einen Array-Schlüssel namens post_excerpt gibt, dieser jedoch immer leer angezeigt wird.

2
Th3Alchemist

Der Wert post_excerpt ist leer, da Sie keine expliziten Auszüge für Ihre Beiträge haben. Während the_excerpt() einen Auszug aus dem Inhalt des Beitrags generiert, wenn der Beitragsauszug leer ist, erzeugt die Funktion wp_get_recent_posts(), die im Grunde ein Wrapper für get_posts() ist, keinen Auszug aus dem Inhalt des Beitrags.

3
Nicolai

Dieser Code könnte funktionieren. Ich verwende den setup_postdata, um ein post-Objekt zu erstellen, das der Funktion the_post() ähnelt. Jetzt können Sie die Funktionen verwenden, die Sie in einer Schleife haben.

$recent_posts = wp_get_recent_posts(
            array(
                'numberposts'   => 3,
                'orderby'       => 'post_date',
                'order'         => 'DESC',
                'post_type'     => 'post',
                'post_status'   => 'publish'
            ), OBJECT);

    $output = '<h2>Latest posts</h2>';
    foreach ( $recent_posts as $recent ) {
        setup_postdata($recent);
        $output .= '<h3>'.get_the_title().'</h3>';
        $output .= get_the_excerpt();
    }
    wp_reset_postdata();
    return $output;
4
Tomás Cot