Mauerwerk verwenden – Wie wird jedes Xth-Post-Thumbnail-Bild über mehrere Spalten verteilt?

Um genau zu sein:

  • Ich verwende Mauerwerk, um alle Beiträge innerhalb einer bestimmten Kategorie anzuzeigen
  • Thumbnail-Bilder für jeden Beitrag werden auf der Kategorieseite in einem 3-Spalten-Format unter Verwendung von CSS-Fluidbreitenspalten angezeigt
  • Ich muss das 7. Miniaturbild anzeigen, das die Breite aller 3 Spalten umfasst

In der Vergangenheit habe ich einen Counter zu Posts hinzugefügt, um den Xth Post zu zielen, um eine class und einen Stil entsprechend anzuwenden. Aber ist das möglicherweise mit der Freimaurerei, die absolut Positionierungselemente ist?

BEARBEITEN

Ich verwende diesen Code, um Posts auf der Mauerwerkseite abzufragen:

if ( get_query_var( 'paged' ) ) { $paged = get_query_var( 'paged' ); } elseif ( get_query_var( 'page' ) ) { $paged = get_query_var( 'page' ); } else { $paged = 1; } $args = array( 'posts_per_page' => 12, 'paged' => $paged ); // Override the primary post loop query_posts( $args ); 

Solutions Collecting From Web of "Mauerwerk verwenden – Wie wird jedes Xth-Post-Thumbnail-Bild über mehrere Spalten verteilt?"

Dies sollte kein Problem mit der Freimaurerei sein, zumindest hatte ich nie eine damit (oder ihr ähnliches äquivalentes Isotop). Eigentlich ist es nur die Schönheit dieser Bibliotheken, dass Sie diese Art von Layout haben können. Der Rest kommt auf die richtigen CSS-Stile. Ich weiß nicht, wie Sie Ihre Counter / Index-class anwenden, aber ich würde es tun, wie unten gezeigt:

 function wpse151589_indexed_post_class( $classes ) { global $wp_query; // the current_post property value starts counting at 0 // we are doing + 1 to start from 1 $index = $wp_query->current_post + 1; // if you want the number to always have 3 digits // like 001, uncomment the next line //$index = sprintf( '%1$03d', $index ); // results in classes like post-nr-1/001 $classes[] = 'post-nr-' . $index; return $classes; } add_filter( 'post_class', 'wpse151589_indexed_post_class' ); 


Bearbeiten: Auf Kommentar antworten

Es gibt einige Dinge, die ich gerne bemerke,

  1. Verwenden Sie nicht query_posts()

    Es gibt einen Grund, warum selbst die entsprechende Codex-Seite angibt:

    Diese function ist nicht für Plugins oder Themes vorgesehen. Wie später erläutert, gibt es bessere, performantere Optionen zum Ändern der Hauptabfrage.

    Und später:

    Verwenden WP_Query für allgemeine WP_Query oder get_posts .

    Und:

    Es wird dringend empfohlen, dass Sie stattdessen den pre_get_posts Filter verwenden und die Hauptabfrage ändern, indem Sie is_main_query überprüfen

    Die zwei informativsten und herausragendsten Quellen für das Warum sind eigentlich hier auf WordPress Development zu finden, sie sind absolut lesenswert:

    • Wann sollten Sie WP_Query vs query_posts () vs get_posts () verwenden?
    • Wann sollten wir WP_query (), query_posts () und pre_get_posts verwenden?
  2. Dass post_class() nicht außerhalb der Schleife verwendet werden kann, ist nicht wahr

    Es gibt sogar einen Abschnitt darüber in der Dokumentation. Zugegeben, die Codex-Seite für post_class ist nicht die beste, die es gibt, aber es ist klar genug, dass die function zwei Parameter hat, nämlich: $classes und $post_id .

     post_class( $classes, $post_id ); 

    Was bedeutet:

    Zum Anzeigen von Posts außerhalb der Schleife oder in einer alternativen Schleife kann der zweite Parameter der post_class-function die Post-ID sein. Die classn werden dann von diesem Posten bestimmt.

    Dies – zusätzlich zu den Informationen von 1. – macht es sehr möglich, dies für Ihren Zweck zu verwenden.

  3. Das WP_Query Objekt verfügt über eine Eigenschaft mit dem Namen $current_post

    $ current_post
    (verfügbar während The Loop ) Index des Posts, der gerade angezeigt wird.

    Es kann für Ihren Zweck verwendet werden, so dass Sie das Rad nicht neu erfinden müssen.

Ich konnte also nicht herausfinden, wie man jedem Post / Artikel-Div eine Zahlensequenz-class hinzufügt, aber ich habe gerade die Vorlage für den 7. Post in der Maurer-Vorlage geändert.

Ich habe es so gemacht:

 < ?php if ( have_posts() ) : ?> < ?php /* Start the Loop */ ?> < ?php while (have_posts()) : the_post(); ?> < ?php $count++; ?> < ?php if ($count == 7) : ?> 
< ?php else: ?>
< ?php endif; ?> < ?php endwhile; ?>