• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Beiträge nach Monat und Jahr gruppieren (WP, ACF)

tigtman

Mitglied
Hallo zusammen

Ich versuche auf meiner Seite (Wordpress) Veranstaltungen nach Monat + Jahr zu sortieren. Das Datum, welches es zu sortieren gilt, ist nicht das Datum der Veröffentlichung des Beitrags, sondern das Datum (event_date) der Veranstaltung, welches mit Hilfe des Plugins Advanced Custom Fields (ACF) eingegeben wurde.

So treffe ich die Auswahl und sortiere die Beiträge:

PHP:
<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array(
      'cat'                => 7,
      'meta_key'        => 'event_date',
      'orderby'            => 'meta_value_num',
      'order'            => 'DESC'
    );
    query_posts($args);
?>

Nun möchte ich zwischen den Veranstaltungen Teilüberschriften einfügen, welche den neuen Monat anzeigen, z. B.:

Dezember 2014
- 24.12.2014: Weihnachtsessen
- 31.12.2014: Silvester-Apéro
Januar 2015
- 01.01.2015: Aufräum-Party
- 02.01.2015: Raketenstöcke sammeln
- 05.01.2015: Arbeitsbeginn

Das Veranstaltungsdatum (event_date) wird wie folgt aufgerufen:
PHP:
<?php the_field('event_date'); ?>

Wie kann ich nun überprüfen, ob Monat und Jahr gleich sind und somit eine Überschrift für diese Gruppe zu realisieren?

Besten Dank und liebe Grüsse
 
Wenn ich mich recht erinnere, gibt es dafür ein Plugin, da muss man nichts selber machen.
 
Ich habe keines gefunden.

Jetzt werden die Veranstaltungen immerhin schon nach dem Tag gruppiert. Wie bekomme ich das nun aber mit dem Monat hin? Also, das alle Veranstaltungen im gleichen Monat + Jahr gruppiert werden.

PHP:
<?php

$the_query = new WP_Query( array(
    'post_status' => 'publish',
    'meta_key'    => 'event_date',
    'orderby'     => 'meta_value'
) );

# This will hold what group we're in
$current_header = '';

# The Loop
while ( $the_query->have_posts() ) :
    $the_query->the_post();

    # get the datum for this post
    $temp_date = get_post_meta( get_the_ID(), 'event_date', true );

    # If they aren't the same, we'll start a new group, which for now
    # just means setting a new heading
    if ( $temp_date != $current_header ) {
        $current_header = $temp_date;
        echo "<div class='sub_category_name_wrapper'><h5>$current_header</h5></div>";
    }

    # ... do normal loop stuff here
    ?>

    <div class="event_content_wrapper">
        <ul>
            <li>       
                <span><?php the_field('event_date'); ?></span>&nbsp;<span><?php the_field('event_region'); ?></span>
                <h4><?php the_title(); ?></h4>
                <br>
                <?php the_excerpt(); ?>
                <a class="content_button" href="<?php the_permalink(); ?>">mehr</a>
            </li>
        </ul><!-- end .post-wrap -->
    </div>

<?php endwhile;

?>
 
Du müsstest eine Schleife erstellen, die die Datumsdaten in ein Array einliest. Dann das Array chronologisch sortieren. Dann das Array nochmal durchlaufen und aus jedem Eintrag des Arrays den Monat herausfiltern. Dann den jeweiligen Monat in einer Variable merken. Am Beginn der Schleife überprüfst du nun, ob sich der Monat geändert hat und wenn ja: Überschrift mit Monat und Jahr ausgeben
 
Zurück
Oben