ACF组子字段不显示

时间:2019-11-16 15:51:54

标签: php wordpress advanced-custom-fields

我已经通过ACF选项页面创建了自定义字段,用户可以在其中输入其社交媒体个人资料链接。如果没有链接,它将不会在前端显示该图标。为此,我创建了一个名为“社交媒体”的小组,该小组将各个平台作为该小组中的字段。

我正在拔头发,试图将这些子字段值拉入主题页脚。它只是不显示任何内容,但是当我显示未嵌套在组中的值时,它将显示出来。

Footer.php↴

<?php
   if( have_rows('social_media') ):
   while( have_rows('social_media') ) : the_row();
?>
<li>
   <a href="<?php the_sub_field('instagram'); ?>">
      <img src="<?php bloginfo('template_directory'); ?>/assets/img/icons/instagram.png" width="25px" height="25px" alt="Instagram Profile">
   </a>
</li>
<?php endwhile; endif; ?>

ACF组↴

ACF Group

ACF选项页面↴

ACF Options Page

TIA寻求任何帮助。非常感谢。

3 个答案:

答案 0 :(得分:2)

我假设这些字段位于ACF选项页面上,因此您必须在 have_rows 函数

中传递字符串 options
have_rows('social_media', 'options')

检查此链接以获取更多信息https://www.advancedcustomfields.com/resources/options-page/

代码看起来像:

<?php
   if( have_rows('social_media', 'option') ):
   while( have_rows('social_media', 'option') ) : the_row();
?>
<li>
   <a href="<?php the_sub_field('instagram'); ?>">
      <img src="<?php bloginfo('template_directory'); ?>/assets/img/icons/instagram.png" width="25px" height="25px" alt="Instagram Profile">
   </a>
</li>
<?php endwhile; endif; ?>

请注意,子字段不需要选项字符串

当字段为空时隐藏Li的一种干净方法:

<?php while ( have_rows('social_media', 'option') ) : the_row(); ?>
    <?php if (get_sub_field('instagram')): ?>
        <li>
           <a href="<?php the_sub_field('instagram'); ?>">
              <img src="<?php bloginfo('template_directory'); ?>/assets/img/icons/instagram.png" width="25px" height="25px" alt="Instagram Profile">
           </a>
        </li>
    <?php endif; ?>
<?php endwhile; ?>

答案 1 :(得分:1)

如果您在选项页面中创建了此字段,则必须将option参数与该字段一起传递。检查此链接https://www.advancedcustomfields.com/resources/options-page/

<?php the_field('your-field-name', 'option'); ?>

所以尝试下面的代码。

<?php
   if( have_rows('social_media', 'option') ):
   while( have_rows('social_media', 'option') ) : the_row();
?>
<li>
   <a href="<?php the_sub_field('instagram'); ?>">
      <img src="<?php bloginfo('template_directory'); ?>/assets/img/icons/instagram.png" width="25px" height="25px" alt="Instagram Profile">
   </a>
</li>
<?php endwhile; endif; ?>

答案 2 :(得分:0)

当您从 ACF 选项页面回显字段时,只需传递 'option' 参数,如 the_field('acf_field_name', 'option')

在您的情况下,代码应该是:

<?php
if( have_rows('social_media', 'option') ):
   while( have_rows('social_media', 'option') ) : the_row();
?>
<li>
   <a href="<?php the_sub_field('instagram'); ?>">
      <img src="<?php bloginfo('template_directory'); ?>/assets/img/icons/instagram.png" width="25px" height="25px" alt="Instagram Profile">
   </a>
</li>
<?php endwhile; endif; ?>