it-swarm.com.de

Anzeige des Beitrags pro Tag

Derzeit habe ich den Code unten angezeigt.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 
    <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
        <a class="vissted" href="<?php the_permalink(); ?>">
            <div class="hovereffect">
                <div class="thumbnail">
                    <?php the_post_thumbnail('singles', array( 'class'  => "img-responsive")); ?>
                    <div class="overlay">
                        <h2><?php the_title(); ?></h2>
                    </div>
                    <div class="caption">
                        <div class="ratings">
                            <p class="pull-right"> </p>
                            <p>
                               Watch Video
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </a>
    </div>
<?php endwhile; else : ?>
    <p>
        <?php _e( 'Sorry, no posts matched your criteria.' ); ?>
    </p>
<?php endif; ?>
<?php wp_reset_query(); ?>

Dieser Code zeigt JEDEN Beitrag auf meiner Website an, was cool ist und alles andere als ich suche, um es auf die nächste Ebene zu bringen. Wie kann ich es so machen, dass es so zum Beispiel post per day anzeigt.

 enter image description here 

Sie sehen in der oberen Ecke, dass das Datum des Posts angezeigt wird. Ich würde es begrüßen, wenn dies auf meiner Website geschehen würde, dann auf 1 Woche beschränken, aber jedes Ergebnis in einem neuen Block anzeigen.

3
Ritzy

Dies ist recht einfach, sollte Ihnen aber auf Ihrem Weg helfen.

//Get posts for the current week
$args = array(
    'date_query' => array(
        array(
            'year' => date( 'Y' ),
            'week' => date( 'W' ),
        )
    )
);

//Check for search query
if ( isset( $_GET['s'] ) ) {
    $args['s'] = $_GET['s'];
}

//Create these variables for use later
$i = 0;
$previous_post_date = 0;

$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :

    //Get the total amount of posts based on the query
    $count = $the_query->found_posts;

    while ( $the_query->have_posts() ) : $the_query->the_post();

        //Get post date
        $post_date = get_the_time('M j, Y');

        //Where the magic happens, see below for explanation
        if ( $previous_post_date !== $post_date ) {

            //If not the first time close div as a daily-block isn't created until the 2nd loop
            if ( $previous_post_date !== 0 ) {
                    echo '</div>';
            }

            $previous_post_date = $post_date;
            echo '<div class="daily-block">' . $post_date;
        } ?>

        <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
            <a class="vissted" href="<?php the_permalink(); ?>">
                <div class="hovereffect">
                    <div class="thumbnail">
                        <?php the_post_thumbnail( 'singles', array( 'class'  => "img-responsive" ) ); ?>
                        <div class="overlay">
                            <?php the_title( '<h2>', '</h2>' ); ?>
                        </div>
                        <div class="caption">
                            <div class="ratings">
                                <p class="pull-right"> </p>
                                <p>Watch Video</p>
                            </div>
                        </div>
                    </div>
                </div>
            </a>
        </div>

        <?php
        //Increment $i
        $i++;
        //Check if it's the end of the loop (i.e. $i = found_posts)
        if ( $i == $count ) {
            echo '</div>';
        } ?>

    <?php endwhile; else : ?>
        <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
    <?php endif;
wp_reset_postdata(); ?>

Nur um die Bedingung zu erklären. Zu Beginn setzen wir $previous_post_date auf 0. Dies bedeutet, dass die Bedingung innerhalb der Schleife in der ersten 'Schleife' immer wahr erscheint (d. H. Das vorherige Datum stimmt nicht mit dem aktuellen Datum überein) und das Datum ausgibt. Die erste Prüfung stellt sicher, dass wir keine abschließende div ausgeben, da ein daily-block div noch nicht existiert.

Wenn true, setzen wir $previous_post_date auf $post_date, damit diese Bedingung beim Durchlaufen von Posts desselben Tages nicht mehr wahr ist. Wenn Sie einen Beitrag mit einem anderen Datum erreichen, wird der Titel ausgegeben und das vorherige Datum erneut zurückgesetzt. Dieses Mal wird das offene daily-block div geschlossen und ein anderes erneut geöffnet.

Am Ende prüfen wir, ob es das Ende der Schleife ist und schließen den daily-block div.

Wenn Sie weitere Informationen benötigen, lassen Sie es mich einfach wissen.

Update für Suchergebnisse

Damit dies auf einer Suchergebnisseite funktioniert, müssen Sie den folgenden Codeausschnitt direkt unter dem Array $args hinzufügen. Ich habe das Hauptcode-Snippet aktualisiert, um dies zu zeigen.

if ( isset( $_GET['s'] ) ) {
    $args['s'] = $_GET['s'];
}

Überprüfen Sie die URL für eine Suchabfragezeichenfolge und fügen Sie sie der Abfrage hinzu, falls sie gefunden wird. Beachten Sie, dass hier nur die Ergebnisse dieser Woche angezeigt werden, jedoch basierend auf dem gesuchten Keyword.

2
Kieran McClung