简化while循环包含wordpress中的帖子代码

时间:2013-01-22 03:01:48

标签: wordpress post

以下代码应显示页面内容,后跟某些页面内容。

 
    <!-- Section -->
    <section>
    <?php if (have_posts()): while (have_posts()) : the_post(); ?>

        <!-- Article -->
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

            <!-- Posts for homepage -->
            <?php
                if ( is_front_page() ) { ?>
                    <?php the_content(); ?>

                    <!-- Show page content according to page ID -->
                    <div class="title-home clearfix">
                        <div class="four title-home-text">Services Spotlight</div>
                        <div class="four title-home-text" style="margin-left: 115px;">Industry Expertise</div>
                        <div class="four title-home-text" style="margin-left: 125px;">Features &amp; Benefits</div>
                    </div>
                    <div class="four-wrapper clearfix">
                    <div class="four-container">
                        <div class="four-col line"> 
                         <?php
                            query_posts('page_id=40');
                            while (have_posts()): the_post();
                               the_content();
                            endwhile;
                        ?>
                        </div>
                        <a href="" class="read-morebtn"> read more </a>
                    </div>

                    <div class="four-container">    
                        <div class="four-col line"> 
                         <?php
                            query_posts('page_id=41');
                            while (have_posts()): the_post();
                               the_content();
                            endwhile;
                        ?>
                        </div>
                        <a href="" class="read-morebtn"> read more </a>
                    </div>

                    <div class="four-container">    
                    <div class="four-col line"> 
                     <?php
                        query_posts('page_id=42');
                        while (have_posts()): the_post();
                           the_content();
                        endwhile;
                    ?>
                    </div>
                    <a href="" class="read-morebtn"> read more </a>
                    </div>


                    <div class="four-container">    
                        <div class="four-col line"> 
                            <?php if(!function_exists('dynamic_sidebar') || !dynamic_sidebar('widget-area-3')) ?>
                        </div>
                    </div>

                    </div>


                <?php
                } 
                else {
                ?>
                    <h1><?php the_title(); ?> </h1>
                    <?php  the_content(); ?>
                <?php } ?>
            <!-- end post homepage -->




            <br class="clear">

            <?php edit_post_link(); ?>

        </article>
        <!-- /Article -->

        <?php endwhile; ?>

        <?php else: ?>

        <!-- Article -->
        <article>
            <h2><?php _e( 'Sorry, nothing to display.', 'html5blank' ); ?></h2>
        </article>
        <!-- /Article -->

    <?php endif; ?>

    </section>

    <!-- /Section -->

<?php get_footer(); ?>

但是,它将最后一个查询显示为循环。

输出代码:

<article id="post-6" class="post-6 page type-page status-publish hentry">
<article id="post-42" class="post-42 page type-page status-publish hentry">

post-42不应显示在文章中。

另外,我知道使用while循环时代码没有简化。我想修复article问题并简化此代码。

1 个答案:

答案 0 :(得分:0)

Codex根据Codex Query Posts Page

建议不要使用query_posts进行辅助循环

看起来你在主循环(文章)上踩踏,因为query_posts会改变主循环。如果要使用query_posts,建议您在完成后调用wp_reset_query()。首选方法是使用WP_query()。