对foreach里面的foreach来说这是正常的吗?

时间:2016-08-07 16:16:58

标签: php html wordpress advanced-custom-fields

这是我的代码如下。它使用array_chunk()将结果拆分为三个一组,因此每个.row只有3列。

   <?php
    $blogusers = get_users( 'exclude=1,12'); //WordPress's get_users()
    $split = array_chunk($blogusers,3); 

    // Array of WP_User objects.
    foreach ( $split as $user ) { 

        echo '<div class="row">';


          foreach ($user as $details){ 

            // get user profile picture or default to a plain one
            if (get_field('show', 'user_'.$details->ID)){ 
              $img = get_field('profile_pic','user_'.$details->ID); 
            }

          echo
           //output each user
           '<div class="columns small-4">
              <div class="profile">
                <div class="profile-image-wrap">      
                  <img src="'.$img.'" class="team-image">
                  <a href="" class="profile-hover-link"><i class="fa fa-bars fa-bars fa-3x"></i></a>      
                </div>    
                <div class="profile-details-wrap">
                  <h4>'.$details->display_name.'</h4>
                  <h5>'.the_field('title', 'user_'.$details->ID).'</h5>
                  <div class="hr-wrap">
                    <hr class="team-hr">
                  </div>                                
                  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam aliquam massa quis mauris sollicitudin commodo.</p>
                  <a class="view" href="">view profile</a>
                </div>
              </div>
            </div>';               
          }
        echo '</div>'; 
      }

问题在于这一行

<h5>'.the_field('title', 'user_'.$details->ID).'</h5>

它不会将输出插入到<h5>标记中,如下所示。

enter image description here

我尝试在该行上使用双引号和单引号,但这并不能解决问题。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我想你正在使用Advanced Custom Fields plugin。如果您查看docs for the_field,就会看到它

  

显示指定字段的值。此功能与echo get_field($field_name);

相同

这正是你想要的。在您的情况下,您希望函数返回字段的值,而不是打印它。所以,将你的行改为

<h5>'.get_field('title', 'user_'.$details->ID).'</h5>

你很高兴。

在您的情况下,问题是您在将字符串打印到浏览器之前构建字符串。在此构建阶段,您需要调用the_fieldecho执行自己的{{1}}。这就是为什么标题出现在整个div之前。