ACF迭代通过WHILE-循环,定义要循环的最大数目

时间:2015-07-12 作者:mrClean

使用ACF中继器字段,我试图显示评级,使用空圆圈和实心圆圈。这是五分之一的评级。

我希望通过迭代一个类名,让repeater字段填充在圆圈中,如下所示:

<?php for($i=1; $i<=get_sub_field(\'rating\'); $i+=1)
    if( $i <= get_sub_field(\'rating\') ) {
        echo \'<li class="graph empty \' . \'fill-\' . $i . \'"></li>\';
    } else {
        echo \'<li class="graph empty"></li>\'; 
    } 
?>
本质上,如果我告诉repeater填充3个圆圈,那么PHP应该计算为以下HTML:

<li class="graph empty fill-1"></li>
<li class="graph empty fill-2"></li>
<li class="graph empty fill-3"></li>
<li class="graph empty"></li>
<li class="graph empty"></li>
实际结果是:

<li class="graph empty fill-1"></li>
<li class="graph empty fill-2"></li>
<li class="graph empty fill-3"></li>
这是有道理的,因为数据库只有3个值,我告诉它遍历所有值。我只是不知道如何让它在找到值的同时迭代类,然后删除类填充-直到它达到5的限制。

在sudo代码中,我希望能够告诉while循环:

//while there are the_rows()
  //iterate the class name "fill-"
//once you have found all the rows
  //only insert the class name "graph empty" until 5 is reached
以下是我的HTML和PHP:

<?php if( have_rows(\'program_skills\') ) : 
    while( have_rows(\'program_skills\') ) : the_row(); ?>

        <div class="skills-wrapper">
            <div class="col-xs-6">
                <p><?php the_sub_field(\'heading\'); ?></p>
            </div>
            <div class="col-xs-6">
                <div class="skills-graph">
                    <ul>
                        <?php for($i=1; $i<=get_sub_field(\'rating\'); $i+=1)
                            if( $i <= get_sub_field(\'rating\') ) {
                                echo \'<li class="graph empty \' . \'fill-\' . $i . \'"></li>\';
                            } else {
                                echo \'<li class="graph empty"></li>\'; //Attempt to display graph empty for the remaining li\'s until the count = 5.
                            } 
                        ?>
                    </ul>
                </div>
            </div>
        </div>

    <?php endwhile;

endif;?>
我真的被困在这个问题上了,谢谢你能给我的任何帮助。如有任何问题,请进一步澄清,我很乐意回答。

1 个回复
最合适的回答,由SO网友:mrClean 整理而成

如果我将计数器与5而不是输入(****)进行比较,那么它的计算结果是完美的。幸亏Milo 寻求帮助。

<?php if( have_rows(\'program_skills\') ) : 
    while( have_rows(\'program_skills\') ) : the_row(); ?>

        <div class="skills-wrapper">
            <div class="col-xs-6">
                <p><?php the_sub_field(\'heading\'); ?></p>
            </div>
            <div class="col-xs-6">
                <div class="skills-graph">
                    <ul>
                        ****<?php for($i=1; $i<=5; $i+=1)
                            if( $i <= get_sub_field(\'rating\') ) {
                                echo \'<li class="graph empty \' . \'fill-\' . $i . \'"></li>\';
                            } else {
                                echo \'<li class="graph empty"></li>\'; 
                            } 
                         ?>
                    </ul>
                </div>
            </div>
        </div>

    <?php endwhile;
endif;?>

结束

相关推荐

ACF迭代通过WHILE-循环,定义要循环的最大数目 - 小码农CODE - 行之有效找到问题解决它

ACF迭代通过WHILE-循环,定义要循环的最大数目

时间:2015-07-12 作者:mrClean

使用ACF中继器字段,我试图显示评级,使用空圆圈和实心圆圈。这是五分之一的评级。

我希望通过迭代一个类名,让repeater字段填充在圆圈中,如下所示:

<?php for($i=1; $i<=get_sub_field(\'rating\'); $i+=1)
    if( $i <= get_sub_field(\'rating\') ) {
        echo \'<li class="graph empty \' . \'fill-\' . $i . \'"></li>\';
    } else {
        echo \'<li class="graph empty"></li>\'; 
    } 
?>
本质上,如果我告诉repeater填充3个圆圈,那么PHP应该计算为以下HTML:

<li class="graph empty fill-1"></li>
<li class="graph empty fill-2"></li>
<li class="graph empty fill-3"></li>
<li class="graph empty"></li>
<li class="graph empty"></li>
实际结果是:

<li class="graph empty fill-1"></li>
<li class="graph empty fill-2"></li>
<li class="graph empty fill-3"></li>
这是有道理的,因为数据库只有3个值,我告诉它遍历所有值。我只是不知道如何让它在找到值的同时迭代类,然后删除类填充-直到它达到5的限制。

在sudo代码中,我希望能够告诉while循环:

//while there are the_rows()
  //iterate the class name "fill-"
//once you have found all the rows
  //only insert the class name "graph empty" until 5 is reached
以下是我的HTML和PHP:

<?php if( have_rows(\'program_skills\') ) : 
    while( have_rows(\'program_skills\') ) : the_row(); ?>

        <div class="skills-wrapper">
            <div class="col-xs-6">
                <p><?php the_sub_field(\'heading\'); ?></p>
            </div>
            <div class="col-xs-6">
                <div class="skills-graph">
                    <ul>
                        <?php for($i=1; $i<=get_sub_field(\'rating\'); $i+=1)
                            if( $i <= get_sub_field(\'rating\') ) {
                                echo \'<li class="graph empty \' . \'fill-\' . $i . \'"></li>\';
                            } else {
                                echo \'<li class="graph empty"></li>\'; //Attempt to display graph empty for the remaining li\'s until the count = 5.
                            } 
                        ?>
                    </ul>
                </div>
            </div>
        </div>

    <?php endwhile;

endif;?>
我真的被困在这个问题上了,谢谢你能给我的任何帮助。如有任何问题,请进一步澄清,我很乐意回答。

1 个回复
最合适的回答,由SO网友:mrClean 整理而成

如果我将计数器与5而不是输入(****)进行比较,那么它的计算结果是完美的。幸亏Milo 寻求帮助。

<?php if( have_rows(\'program_skills\') ) : 
    while( have_rows(\'program_skills\') ) : the_row(); ?>

        <div class="skills-wrapper">
            <div class="col-xs-6">
                <p><?php the_sub_field(\'heading\'); ?></p>
            </div>
            <div class="col-xs-6">
                <div class="skills-graph">
                    <ul>
                        ****<?php for($i=1; $i<=5; $i+=1)
                            if( $i <= get_sub_field(\'rating\') ) {
                                echo \'<li class="graph empty \' . \'fill-\' . $i . \'"></li>\';
                            } else {
                                echo \'<li class="graph empty"></li>\'; 
                            } 
                         ?>
                    </ul>
                </div>
            </div>
        </div>

    <?php endwhile;
endif;?>

相关推荐