WordPress循环分组div

时间:2013-05-24 12:50:11

标签: php wordpress if-statement

这是我的WordPress循环。我试了一些东西,但没有什么能像我想的那样。

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

$timestamp = get_post_meta( $post->ID, '_tatort_datum', true );

$ts_jahr = strftime("%Y",$timestamp);   
if($ts_jahr != $jahr_l) {
    echo '<h2 class="spacer_jahr" id="'. $ts_jahr .'">'. $ts_jahr .'</h2>';
} 
$jahr_l = $ts_jahr;


$ts_monat = strftime("%m",$timestamp);      
if($ts_monat != $monat_l) {
    echo '<h3 class="spacer_monat" id="'. strtolower($monat[$ts_monat]) . "_" . $ts_jahr. '">'. $monat[$ts_monat] .'</h3>';
} 
$monat_l = $ts_monat;

<article>here the content</article>

<?php endwhile; wp_reset_query(); ?>

输出结果为:

<h2>Headline</h2>
<h3>Headline</h3>
<article>Content</article>
<article>Content</article>
<article>Content</article>
<h3>Headline</h3>
<article>Content</article>
<article>Content</article>

但是,我需要这个输出:

<h2>Headline</h2>
<div class="month"> /* Here is the Change */
    <h3>Headline</h3>
    <article>Content</article>
    <article>Content</article>
    <article>Content</article>
<div>
<div class="month">
<h3>Headline</h3>
<article>Content</article>
</div>

但是,我现在不知道如何做到这一点。我想在新文章的每个新月份都有一个div容器,所以我需要一个提示或代码片段,以正确的方式解释我。

1 个答案:

答案 0 :(得分:1)

您可以使用布尔变量$divOpen来跟踪<div>是否已打开...

$divOpen = false;

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

    $timestamp = get_post_meta($post->ID, '_tatort_datum', true);

    $ts_jahr = strftime("%Y", $timestamp);
    if ($ts_jahr != $jahr_l) {
        if ($divOpen) {
            echo '</div>';
            $divOpen = false;
        }
        echo '<h2 class="spacer_jahr" id="'. $ts_jahr .'">'. $ts_jahr .'</h2>';
    }
    $jahr_l = $ts_jahr;

    $ts_monat = strftime("%m",$timestamp);
    if ($ts_monat != $monat_l) {
        if ($divOpen)
            echo '</div>';
        echo '<div class="month">';
        $divOpen = true;
        echo '<h3 class="spacer_monat" id="'. strtolower($monat[$ts_monat]) . "_" . $ts_jahr. '">'. $monat[$ts_monat] .'</h3>';
    } 
    $monat_l = $ts_monat;

    <article>here the content</article>

<?php endwhile; wp_reset_query(); ?>

if ($divOpen)
    echo '</div>';