我的代码导致无限循环,无法看到bug

时间:2013-09-05 18:53:54

标签: php wordpress custom-fields

我正在使用高级自定义字段插件处理WordPress项目。

然而,我从代码中获得了一个疯狂的无限循环,所以我显然在某处弄乱了一些东西,但是经过两个小时的观察,我看不到问题。

<?php get_header(); ?>

    <?php
    // If the loop has posts
    if (have_posts()) :
        // For each post this page has
        while (have_posts()) : the_post();

            // Display the Flexible Content
            while(has_sub_field('add_row')):

                // If the content type is Tagline
                if(get_row_layout() == 'tagline'): ?>
                    <div class="row paddingBottom paddingTop">
                        <div class="col-xs-12">
                            <h3 class="tagLine"><?php the_sub_field('tagline'); ?></h3>
                        </div>
                    </div>
                <?php
                // If the content type is a Featured Image
                /*elseif ( get_row_layout() == 'featured_image' ): ?>
                    <div class="col-xs-12 textCenter">
                        <?php   
                            $attachment_id = get_sub_field('featured_image');
                            $size = "full-width"; // (thumbnail, medium, large, full or custom size)
                            $image = wp_get_attachment_image_src( $attachment_id, $size );
                        ?>
                        <img src="<?php echo $image[0]; ?>" alt="<?php the_title(); ?>" />
                    </div>
                <?php*/
                // If the content type is a horizontal rule
                elseif ( get_row_layout() == 'horizontal_rule' ) : ?>
                <div class="row">
                    <div class="col-xs-12">
                        <hr />
                    </div>
                </div>
                <?php   
                // If the content type is Columns
                elseif ( get_row_layout() == 'columns' ):
                    // If there is at least one column section
                    if(get_sub_field('column')):
                        // For each column section
                        while(has_sub_field('column')): ?>
                            <div class="row paddingTop paddingBottom"> 

                                <?php
                                    if(get_sub_field('column_content_type')):
                                        $count_rows = 0;
                                        // Counting
                                        while(has_sub_field('column_content_type')):
                                            $count_rows++;
                                        endwhile;
                                        // Loop
                                        while(has_sub_field('column_content_type')): ?>
                                            <div class="
                                                <?php /*
                                                    if ( $count_rows == 1 ) :
                                                        echo "col-xs-12";
                                                    elseif ( $count_rows == 2 ) :
                                                        echo "col-xs-6";
                                                    elseif ( $count_rows == 3 ) :
                                                        echo "col-xs-6 col-sm-4";
                                                    elseif ( $count_rows == 4 ) :
                                                        echo "col-xs-6 col-sm-6 col-md-4";
                                                    endif; */
                                                ?>
                                            "> <?php
                                                // Title
                                                if ( get_sub_field('title') ) : ?>
                                                    <h2 class="smallTitle"><?php the_sub_field('title');?></h2><?php
                                                endif;
                                                // Text Area
                                                if ( get_sub_field('text') ) :
                                                    the_sub_field('text');
                                                endif;
                                                // Link
                                                if ( get_sub_field('link') ) : ?>
                                                    <?php // eventually need to make it so you can change the link text ?>
                                                    <a class="textCenter" href="<?php the_sub_field('link'); ?>">
                                                        More info
                                                    </a> <?php
                                                endif; ?>
                                            </div> <?php
                                        endwhile;
                                    endif;
                                ?>

                            </div>                      

                            <?php
                        endwhile; // end for each column section
                    endif; // end checking for at least one column section

                endif; // end checking content type is columns

            endwhile; // end flexible content

         endwhile; // end for each post
    endif; // end checking for at least one post
    ?>

<?php get_footer(); ?>

2 个答案:

答案 0 :(得分:1)

while(has_sub_field('column_content_type')):
     $count_rows++;
endwhile;

这是你的问题......但根据我所看到的情况,它可能是其中之一。看起来你认为while循环就像if语句一样...你在循环中所做的只是一遍又一遍地递增它。它永远不会结束。

答案 1 :(得分:0)

我认为错误是 // Display the Flexible Content while(has_sub_field('add_row')): 我认为你需要使用if(){ // Code } 而不是“同时”