1

まず、ワードプレスを使っています。というカスタム コンテンツ タイプを表示するループがありますevents。バックエンドでこのイベントに関連付けられたユーザー アカウントがあり、author.php ページ (ユーザー プロファイル ページ) に関連付けられている多くのイベントを出力するように設定しています。

通常、1 か月に複数のイベントがあり、現在、コードはイベントを別々divの に表示するように設定されています。これは次のようになります。

MAY 2013
- 14 May 2013 Title of the event - City, State <link>

MAY 2013
- 17 May 2013 Title of the event - City, State <link>

JUN 2013
- 01 Jun 2013 Title of the event - City, State <link>

月に複数のイベントがある場合は、すべてのイベントを 1 つの「月」にまとめて、次のdivように表示したいと考えています。

MAY 2013
 - 14 May 2013 Title of the event - City, State <link>
 - 17 May 2013 Title of the event - City, State <link>

JUN 2013
- 01 Jun 2013 Title of the event - City, State <link>

目的の出力を得るためにループを配置する方法がわかりません。これが私のコードです。

<?php

    $currentAuthorId = $authorID;   // gets the current authors ID of the user you are viewing
    $today = getdate();

    $args = array(
        'post_type' => 'events',
        'year' => $today['year'],
        'order' => 'ASC'
    );

    $eventQuery = new WP_Query($args);

    while( $eventQuery->have_posts() ) : $eventQuery->the_post();   // Query for the events
        $eventMonth = date('M', strtotime($eventQuery->post->post_date));
        $eventYear = date('Y', strtotime($eventQuery->post->post_date));

        echo '<div class="schedule-month">';    // Opening div for a month
        echo '<h3>'.$eventMonth.'<span class="blue">'.$eventYear.'</span></h3>';
        echo '<ul>';

        if(get_field('event_performers')) {     // Using ACF (advanced custom fields) I check if there are performer/users tied to the events
            while(has_sub_field('event_performers')) {
                $performer = get_sub_field('performer');
                $uid = $performer['ID'];


                if( $currentAuthorId == $uid) {     // Match the current author to only the events he/she is tied to
                    $eventDate = date('d M Y', strtotime($eventQuery->post->post_date));
                    $city = get_field('city');
                    $state = get_field('state');

                    echo '<li>';        // Loop through all events with that author and display
                    echo '  <span class="blue">'.$eventDate.'</span>';
                    echo '  <p>'.$eventQuery->post->post_title.' - </p>';
                    echo '  <span class="light">'.$city.', '.$state.'</span>';
                    echo '  <a href="'.$eventQuery->post->guid.'">view event<span class="arrow"></span>';
                    echo '  </a>';
                    echo '</li>';
                }
            }
        }

        echo '</ul>';
        echo '</div>';

    endwhile; 

?>

同じ月かどうかをチェックする変数を保存する必要があることはわかっていますが、必要なものを表示するために正しく配置する方法がわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

1
$tempMonth = '';
$tempYear = '';
while( $eventQuery->have_posts() ) : $eventQuery->the_post();   // Query for the events
    $eventMonth = date('M', strtotime($eventQuery->post->post_date));
    $eventYear = date('Y', strtotime($eventQuery->post->post_date));

    if($tempMonth != $eventMonth || $tempYear != $eventYear)
    {
      $tempMonth = $eventMonth;
      $tempYear = $eventYear;
      echo '<div class="schedule-month">';    // Opening div for a month
      echo '<h3>'.$eventMonth.'<span class="blue">'.$eventYear.'</span></h3>';
      echo '<ul>';
     }
于 2013-05-20T22:20:08.033 に答える