2017-08-01 2 views
1

Ich arbeite derzeit eine Wordpress-Schleife, um Blog-Posts, ihre Titel, vorgestellten Bild, Datum und Kategorie abrufen. Nachdem ich das gesagt habe, versuche ich den Schleifenanfang auf dem 5. absteigenden Post zu verschieben, da die vorherigen 4 früher auf der Seite referenziert wurden.WP Offset arbeitet nicht mit Foreach Schleife

Ich habe erfolgreich die Beiträge ausgeglichen, aber es scheint, dass ich die Kategorie nicht greifen kann.

<?php 
    $post_args = array(
       'post_type' => 'post', 
       'post_status' => 'publish', 
       'order'  => 'DESC', 
       'offset'  => 4 
       ); 
    $post_query = new WP_Query($post_args); 
    if ($post_query->have_posts()): 
    $count = 1; 
    $terms = get_terms(array(
        'taxonomy' => 'category', 
        'hide_empty' => true 
      )); 
    while ($post_query->have_posts()) : $post_query->the_post(); 
    $feat_img = wp_get_attachment_url(get_post_thumbnail_id()); 
?> 
<div class="col-sm-3 col-xs-6"> 
    <div class="featured-img" style="background-image: url(<?php echo $feat_img; ?>)" 
    <?php the_date('F j Y', '<h6>', '</h6>'); ?> 
    <h3><?php the_title(); ?></h3> 
    <div class="category"><?php echo $terms->name; ?></div> 
    </div> 
</div> 

Ich habe versucht, einen etwas anderen Ansatz und konnte jede Beiträge Kategorie erhalten eine foreach-Schleife durch eine Weile und wenn Schleife gefolgt Verwendung. Während ich jede Beitragskategorie erfolgreich bekam, arbeitete der Offset nicht zusammen. Vielleicht überschätze ich es. Hier ist mein anderer Versuch.

<?php 
    $terms = get_terms(array(
     'taxonomy' => 'category', 
     'hide_empty' => true, 
    )); 
    $count = 1; 
    foreach ($terms as $term) : 
    $post_args = array(
     'offset' => 4, 
     'post_type' => 'post', 
     'order' => 'DESC', 
     'post_status' => 'publish', 
     'posts_per_page' => -1, 
     'tax_query' => array(
      array(
       'taxonomy' => 'category', 
       'field' => 'slug', 
       'terms' => $term->slug 
      ) 
     ), 
    ); 
    $post_query = null; 
    $post_query = new WP_Query($post_args); 
    if ($post_query->have_posts()) : 

    while ($post_query->have_posts()) : $post_query->the_post(); 
    $feat_img = wp_get_attachment_url(get_post_thumbnail_id()); 
?> 

Irgendjemand, der eine Hand leiht, um zu helfen, beide Aufgaben zu erfüllen? Jede Eingabe würde sehr geschätzt werden. Vielen Dank im Voraus.

Antwort

0

you need "posts_per_page" auf einen anderen Wert eingestellt werden als -1, ist es gut erklärt in der Dokumentation

https://codex.wordpress.org/Class_Reference/WP_Query

posts_per_page (int) - Anzahl der Post zeigen pro Seite (verfügbar seit Version 2.1, ersetzte Showposts Parameter). Verwenden Sie 'posts_per_page' => - 1, um alle Beiträge anzuzeigen (der Parameter 'offset' ist ignoriert mit einem Wert -1). Stellen Sie den Parameter 'paged' ein, wenn die Seitennummerierung nach Verwendung dieses Parameters deaktiviert ist. Hinweis: Wenn sich die Abfrage in einem Feed befindet, überschreibt wordpress diesen Parameter mit der gespeicherten Option 'posts_per_rss' . Um das Limit wieder einzufügen, verwenden Sie den Filter 'post_limits' oder Filter 'pre_option_posts_per_rss' und geben -1

zurück