2012-11-16 73 views
0

im在wordpress的php模板文件中使用shortcode,因爲shortcode打開和關閉,我需要將整個內容作爲一個變量來獲取。在這種情況下,內容是一個wordpress循環。如何將wordpress循環的內容作爲一個變量循環使用

到目前爲止,我只顯示循環的最後一篇文章。我明白爲什麼,因爲這是變量的最終價值。林想知道有人能幫我把整個內容(即所有三個帖子)變成一個變量,與最後一篇文章相反。

感謝

<?php 
       $news_title .= ''; 
       $news_single_post .= ''; 

      if (have_posts()) : 
      $the_query = new WP_Query(array ('posts_per_page' => 3, 'cat' => 1)); /* */ 
      while ($the_query->have_posts()) : $the_query->the_post(); ?> 
      <?php 
       $news_title = get_the_title(); 
       $news_excerpt = get_the_excerpt(); 
       $news_single_post = '<div class="home-content-news-title">'.$news_title.'</div><div class="home-content-news-excerpt">'.$news_excerpt.'</div>'; 

       endwhile; 
       wp_reset_postdata(); 

       endif; 



       $news_tab_title_string = 'News'; 
       $news_tab_title_shortcode = do_shortcode('[wptabtitle]'.$news_tab_title_string.'[/wptabtitle]'); 
       $news_tab_content_shortcode = do_shortcode('[wptabcontent]'.$news_single_post.'[/wptabcontent]'); 
       $news_tab = $news_tab_title_shortcode.$news_tab_content_shortcode; 
       echo do_shortcode('[wptabs]'.$news_tab.'[/wptabs]'); 

     ?> 

回答

5

定義你想要的所有內容進入上方和環外例如變量$variable = '';,然後在循環內連接到該變量,使用$variable .= $content_to_concat;,然後在末尾循環的外部使用echo $variable;打印整個內容。

你的代碼爲例:

<?php 
    $news_title .= ''; 
    $news_single_post .= ''; 
    $news_all_posts = ''; // Define the variable 

    if (have_posts()) : 
    $the_query = new WP_Query(array ('posts_per_page' => 3, 'cat' => 1)); /* */ 

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

    $news_title = get_the_title(); 
    $news_excerpt = get_the_excerpt(); 
    $news_single_post = '<div class="home-content-news-title">'.$news_title.'</div><div class="home-content-news-excerpt">'.$news_excerpt.'</div>'; 

    $news_all_posts .= $news_single_post; // Add each post to the variable 

    endwhile; 
    wp_reset_postdata(); 

    endif; 

    $news_tab_title_string = 'News'; 
    $news_tab_title_shortcode = do_shortcode('[wptabtitle]'.$news_tab_title_string.'[/wptabtitle]'); 

    // Use the variable to display the content 
    $news_tab_content_shortcode = do_shortcode('[wptabcontent]'.$news_all_posts.'[/wptabcontent]'); 

    $news_tab = $news_tab_title_shortcode.$news_tab_content_shortcode; 
    echo do_shortcode('[wptabs]'.$news_tab.'[/wptabs]'); 
?> 
+0

謝謝Maccath,即完美。我可以只是爲了學習... 我決定省略'$ news_all_posts'變量,只是定義'$ news_single_post ='';',然後在循環中我寫了'news_single_post。= ... .........',這也工作。 只是想知道我做了什麼有什麼不對嗎?我做這件事的唯一原因是減少變量的數量並保持整潔,但我只是在學習,所以也許我錯過了一些明顯的東西,謝謝你的幫助。 – Adrian

+1

你做得很好,雖然我會刪除'$ news_single_post',而只是使用'$ news_all_posts'而不是'$ news_single_post'現在包含所有帖子,所以名稱與其內容不匹配 - 最好的做法是始終使用相關變量名稱以及刪除不必要的變量。 – Maccath

+0

乾杯,這是有道理的 – Adrian