【问题标题】:Show Advanced Custom Fields repeater child field only when it exists in the post仅当帖子中存在高级自定义字段重复器子字段时才显示它
【发布时间】:2013-11-08 20:49:25
【问题描述】:

我正在使用转发器字段在页面上显示产品。其中一些需要 PDF 下载链接,而有些则不需要。仅当 PDF 已上传到文件上传转发器子字段时,我才需要能够显示“下载 PDF”链接。

这是我目前正在使用的:

<?php 
            $rows = get_field('artwork_example');
            if($rows) {
                foreach($rows as $row) {
                    echo '<div class="artwork-content"><img src="', $row['image'];
                    echo '"><div class="right"><h2>', $row['title'];
                    echo '</h2><p>', $row['text'];
                    echo '</p>';
                    if ( get_sub_field('upload_pdf') ) echo '<p><a class="download" href="', $row['upload_pdf'];
                    if ( get_sub_field('upload_pdf') ) echo '">Download PDF</a></p></div></div>'; 
        } 
    }
?>

任何帮助表示赞赏,谢谢!

【问题讨论】:

    标签: php wordpress custom-fields advanced-custom-fields


    【解决方案1】:

    将此结构与循环一起使用

    if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    
    <?php if(get_field('photo_repeater')): ?>
    
    <?php while(has_sub_field('photo_repeater')): ?>
    
    <?php if(get_sub_field('photo_slider')): ?>
    
    <?php while( has_sub_field('photo_slider') ): ?> 
    
            <?php 
            $img_url = get_sub_field('photo_block');
            $image = aq_resize( $img_url, 200, 200, true );
            ?>
            <img class="image_news" src="<?php echo $image; ?>"  alt="111" />
    <?php endwhile; ?>     
    
    <?php endif; ?>
    
    <?php endwhile; ?>   
    
    <?php endif; ?>
    
    <?php endwhile; ?> 
    

    PS - 测试中继器内的子字段 - 中继器

    if(get_sub_field('photo_block'))(....)
    

    【讨论】:

      【解决方案2】:

      你可以简单地使用:

      <?php if ($row['upload_pdf'])
      {
        //show link
      }
      else
      {
        //hide
      }
      

      编辑:

      我会这样做:

      <?php 
                  $rows = get_field('artwork_example');
                  if($rows) {
                      foreach($rows as $row) {
                          echo '<div class="artwork-content"><img src="', $row['image'];
                          echo '"><div class="right"><h2>', $row['title'];
                          echo '</h2><p>', $row['text'];
                          echo '</p>';
      
                          if ( $row['upload_pdf'])
                          {
                              <a class="download" href="<?php echo $row['url']; ?>">Download PDF</a> <?php
                          }
                          else
                          {
                              echo '';
                          }
              } 
          }
      ?>
      

      另外,如果您不确定如何从 ACF 中获取某些值,请使用 var_dump。

      var_dump($row);
      

      祝你好运!

      【讨论】:

      • 谢谢,我如何将它集成到上面的代码中?似乎打破了我尝试过的方式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2021-02-11
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多