如何将wordpress循环的内容作为一个外部循环变量回显

时间:2012-11-16 14:32:21

标签: php wordpress loops

我在wordpress的php模板文件中使用短代码,因为短代码打开和关闭我需要将整个内容作为一个变量获取。在这种情况下,内容是一个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]');

         ?>

1 个答案:

答案 0 :(得分: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]');
 ?>