2014-10-26 17 views
0

我是PHP和Wordpress的新手,我試圖完成的是按月份+年列出所有帖子。月份+年份顯示爲鏈接,點擊該鏈接即可切換日期。我的CSS代碼看起來像這樣,並正常工作(由jQuery完成切換功能)。使用php生成WP循環中的關閉div

<div class="monat"> <!-- month div --> 
    <a href="#" title="Oktober 2014" class="zeigeTage">Oktober 2014</a> <!-- Toggle Button --> 
     <div class="tage"> <!-- toggle div - shown when toggle button clicked --> 
      <a href="#" title="#" class="tag">12</a> <!-- day of month --> 
      <a href="#" title="#" class="tag">20</a> <!-- day of month --> 
      <a href="#" title="#" class="tag">22</a> <!-- day of month --> 
      <a href="#" title="#" class="tag">23</a> <!-- day of month --> 
    </div> <!-- end toggle div -->  
</div> <!-- end month div --> 

這就是我迄今爲止在php中完成的工作。問題是,我需要2日收盤的div末(類monat和類踏歌),我不知道如何實現它們在PHP代碼...

<?php 

$prev_month = ''; 
$prev_year = ''; 

while(have_posts()) 

{ 
    the_post(); 
    if(get_the_time('F') != $prev_month || get_the_time('Y') != $prev_year) 

    { 
    echo '<div class="monat"><a href="#" title="#" class="zeigeTage">'.get_the_time('F Y').'</a><div class="tage">'; 
    } 

?> 

<a href="<?php the_permalink(); ?>" title="#" class="tag"><?php the_time('j'); ?></a> 

<?php 
    $prev_month = get_the_time('F'); 
    $prev_year = get_the_time('Y'); 
} 
?> 

感謝您的幫助, 安德烈亞斯

回答

-1

你已經發現瞭如何檢測月份變化事件:

$month_changed = (get_the_time('F') != $prev_month) 
       || (get_the_time('Y') != $prev_year); 
if ($month_changed) { 
    ... 
} 

,你輸出(在這裏我已經放在...)已經div的開幕。但是你仍然錯過了什麼時候結束這些。

首先你只需要在打開任何時候關閉div標籤。你可以做到這一點非常類似於像你幾個月檢查做的,只是另一個變量:

$prev_month = ''; 
$prev_year = ''; 
$divs_opened = false; ## third variable 

while (have_posts()) { 
    ... 

所以現在,當您第一次打開的div,設置$divs_opened變量true

$month_changed = (get_the_time('F') != $prev_month) 
       || (get_the_time('Y') != $prev_year); 
if ($month_changed) { 
    $divs_opened = true; 
    ... 
} 

而當你需要的,如果他們已經打開,關閉的div,你需要檢查的是,太:

$month_changed = (get_the_time('F') != $prev_month) 
       || (get_the_time('Y') != $prev_year); 
if ($month_changed) { 
    if ($divs_opened) { 
     echo "</div></div>"; 
    } 
    $divs_opened = true; 
    ... 
} 

所以現在這已接近完成,但還有一個地方需要關閉div(如果打開):即在循環之後:

$prev_month = ''; 
$prev_year = ''; 
$divs_opened = false; ## third variable 

while (have_posts()) { 
    ... 
} 

if ($divs_opened) { 
    echo "</div></div>"; 
} 

這應該這樣做。我希望它能給你指出你可以用類似的方法來檢測關閉div的月份變化。

0

非常感謝你,好! 工程就像一個魅力!

這裏是編輯的代碼:

<?php 
         $prev_month = ''; 
         $prev_year = ''; 
         $divs_opened = false; 

         query_posts('category_name=wurst'); 

         while(have_posts()) { ## Loop Start 

          the_post(); 
          $month_changed = (get_the_time('F') != $prev_month) || (get_the_time('Y') != $prev_year); 
          if ($month_changed) { 
           if ($divs_opened) { 
            echo "</div></div>"; 
           } 
           $divs_opened = true; 

           { 
           echo '<div class="monat"><a href="#" title="#" class="zeigeTage">'.get_the_time('F Y').'</a><div class="tage">'; 
           } 
          } 
        ?> 
         <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="tag"><?php the_time('j'); ?></a> 
        <?php 
          $prev_month = get_the_time('F'); 
          $prev_year = get_the_time('Y'); 
         } ## Loop End 

         if ($divs_opened) { 
          echo "</div></div>"; 
         } 
        ?>