it-swarm.com.de

Erstelle eine statische Startseite mit 3-5 letzten Beiträgen

Ich habe Probleme mit der Anpassung der Startseite für mein benutzerdefiniertes Thema. Ich habe ein benutzerdefiniertes Theme entworfen und es ziemlich genau mit dem Underscore boilerplate codiert.

Soweit ich weiß, schlägt der Codex vor, dass ich eine front-page.php erstelle und dort anpasse. In Einstellung> Lesen Ich habe eine statische/Startseite ausgewählt (meine gewünschte Seite, auf der ich die statische Begrüßungsnachricht ändere). Darunter möchte ich 3-5 aktuelle Beiträge mit Thumbnails (aktiviert in meinen Funktionen) und Auszügen haben.

Meine Startseite.php:

<main id="main" class="site-main" role="main">

        <?php while ( have_posts() ) : the_post(); ?>

            <?php get_template_part( 'content', 'page' ); ?>

        <?php endwhile; // end of the loop. ?>

        <h2>Recent Posts</h2>
        <ul>
        <?php
            $args = array( 'numberposts' => '5' );
            $recent_posts = wp_get_recent_posts( $args );
            foreach( $recent_posts as $recent ){
                echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Look '.esc_attr($recent["post_title"]).'" >' .   $recent["post_title"].'</a> </li> ';
            }
        ?>
        </ul>

</main><!-- #main -->

Das funktioniert, aber ich habe keine Ahnung, wie man Thumbnails + Auszüge lädt. Am wichtigsten ist das richtig?

1
nerijusgood

Ich würde eher nicht mit wp_get_recent_posts oder sogar get_posts für benutzerdefinierte Abfragen wie diese gehen. Standardmäßig sind Vorlagentags wie the_excerpt() für diese Funktionen nicht verfügbar, und Sie müssen setup_postdata($post) verwenden, um auf diese Vorlagentags zugreifen zu können.

Ich persönlich würde WP_Query in einem Fall wie diesem verwenden, der flexibler ist, insbesondere wenn eine benutzerdefinierte Abfrage erstellt werden muss, die paginiert werden muss.

Hier ist ein Beispiel einer benutzerdefinierten Abfrage, um die neuesten 5 Beiträge zu erhalten. Hinweis: Ich habe kein HTML-Markup eingefügt. Eine Liste aller verfügbaren Argumente finden Sie unter dem Link, den ich in WP_Query angegeben habe.

$args = array(
    'posts_per_page' => 5,
    'order' => 'DESC'
);

$rp = new WP_Query( $args );

if($rp->have_posts()) :
    while($rp->have_posts()) : $rp->the_post();

       the_title(); // posttitle
       if ( has_post_thumbnail() ) {  // check if the post has a Post Thumbnail assigned to it.
          the_post_thumbnail(); //display the thumbnail
       } 

       the_excerpt(); // displays the excerpt

    endwhile;
    wp_reset_postdata(); // always always remember to reset postdata when using a custom query, very important
endif;

Zur weiteren Lektüre:

2
Pieter Goosen

Sie können verwenden:

get_the_post_thumbnail($recent['ID'], 'post-thumbnail');

um das Vorschaubild zu erhalten. Leider gibt es keine Möglichkeit, den Auszug zu erhalten. Sie können den Inhalt jedoch mit PHP zuschneiden.

Alternativ gibt es einen Haken, den ich vorher noch nicht benutzt habe. Sie können ihn ausprobieren und sehen, wie er für den Auszug funktioniert:

get_post_field();

0
user58014

Es sieht so aus, als würden Sie mit den beiden vorherigen Antworten näher dran sein, aber meines Wissens müssen Sie die foreach-Schleife nach der benutzerdefinierten Abfrage möglicherweise in einen zweiten WordPress-Schleifenaufruf umwandeln (siehe ein Beispiel hier in den "Beispielen " Sektion):

Der Grund, warum ich die WordPress-Schleife vorschlage, ist, dass die Funktion the_excerpt() nur innerhalb des Standard-Loop-Frameworks funktioniert. Wenn Sie sich in "the Loop" befinden, würden Sie verwenden

the_post_thumbnail( 'your-custom-post-size-here' );

eher, als

get_the_post_thumbnail

wie Yusri Mathews vorschlägt. Seine Antwort funktioniert außerhalb von "the Loop", in Fällen wie Ihrer foreach-Schleife.

Aber wie oben erwähnt, haben Sie Zugriff auf the_excerpt(), wenn Sie sich in "the Loop" befinden.

0
Iso