wake-up-neo.com

Die ersten sechs Pfosten im Karussell, die nächsten acht im Raster

Die Titelseite muss die ersten sechs Beiträge in einem Karussell und dann die nächsten acht Beiträge in einem Raster enthalten. Was ist die beste Vorgehensweise zum Durchlaufen einer solchen Konstruktion? Ich benutze derzeit "get_posts", um die ersten 14 Posts aufzurufen, und rufe danach jeden manuell auf, aber ich dachte, es muss einen besseren Weg geben.

Folgendes mache ich zu Beginn von index.php:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$offset = ($paged - 1) * 14;

$args = array(
    'numberposts'       => 14,
    'offset'            => $offset,
    'orderby'           => 'date',
    'order'             => 'DESC',
    'post_type'         => 'post',
    'post_status'       => 'publish',
    'suppress_filters'  => true
);
$front_page_posts = get_posts( $args );

Das Problem ist, dass ich "get_template_part" nicht aufrufen kann, da es eigentlich keine Post-Schleife gibt. Der Rest meines Codes sieht also ungefähr so ​​aus:

<div class="carousel">
    <?php   get_carousel_slide($front_page_posts[0]->ID, true); ?>
    <?php   get_carousel_slide($front_page_posts[1]->ID); ?>
    <?php   get_carousel_slide($front_page_posts[2]->ID); ?>
    <?php   get_carousel_slide($front_page_posts[3]->ID); ?>
    <?php   get_carousel_slide($front_page_posts[4]->ID); ?>
    <?php   get_carousel_slide($front_page_posts[5]->ID); ?>
</div>

[...]

<div class="grid">
    <?php
    $count = 6;
    while($count < 14){
        get_front_eighth($front_page_posts[$count]->ID);
        $count++;
    }
?>

Wie Sie sehen, muss ich eine separate Funktion aufrufen, um die Vorlage abzurufen, anstatt "get_template_part" zu verwenden.

Was ist die beste Vorgehensweise dafür?

1
mediocre_bro

Verwenden Sie WP_Query mit diesem Offset

   <?php
    $offset = 6;
    $post_args = array(
        'post_type' => 'post',
        'posts_per_page' => $offset,
    );

    $slider_blog_posts = new WP_Query( $post_args );
    ?>

    <?php if ( $slider_blog_posts->have_posts()  ): ?>
      <div class="carousel">
        <?php while( $slider_blog_posts->have_posts() ): $slider_blog_posts->the_post(); ?>
          <?php   get_carousel_slide( get_the_ID, true); ?>
        <?php endwhile; ?>
      </div>
    <?php endif; ?>
    <?php wp_reset_postdata(); ?>

und erstelle dann eine neue Abfrage für den Rest der Posts:

 <?php
    $new_args = array(
          'post_type' => 'post',
          'posts_per_page' => 8,
          'offset' => $offset
        );

       $grid_blog_posts = new WP_Query( $new_args );
    ?>   
        <?php if ( $grid_blog_posts->have_posts()  ): ?>
            <div class="grid">
               <?php while( $grid_blog_posts->have_posts() ): $grid_blog_posts->the_post(); ?>
                  <?php get_front_eighth( get_the_id() ); ?>
                <?php endwhile; ?>
             </div>
        <?php endif; ?>
        <?php wp_reset_postdata(); ?>

die Funktionen verwenden sie, um Daten zurückzugeben, die kein HTML anzeigen sollen. Das Anzeigen von HTML sollte in Fragmenten erfolgen.

1
Yuxel Yuseinov