Как отобразить подполе ACF, только если значение установлено, если нет, скрыть?

Я использую ACF, Flexible-Content.

Я сделал медиа-поля для Facebook, Twitter и многое другое.

Поля получат ссылку, так как интерфейс - это просто логотип компании.

Мне нужно показать HTML, только если значение установлено, если нет, не показывать его.

Как я могу сделать это? Мне нужно что-то вроде этого:

                       if( get_row_layout() == 'social_media_icons' ): ?>

                            if get_sub_field('media_facebook') is set, show this {
                            <li class="author-profile__social-item"><a rel="noopener noreferrer" href="<?php echo get_sub_field('media_facebook'); ?>" class="author-profile__social-anchor" target="_blank"><i class="fa fa-facebook" aria-hidden="true"></i></a></li> 
                            }

                            if get_sub_field('media_twitter') is set, show this {
                            <li>Twitter</li>
                            }

                        <?php endif; ?>

Я попробовал это:

  <?php

                while ( have_posts() ) : the_post();

                if( have_rows('social_media','user_'. $author_id) ):

                    while ( have_rows('social_media', 'user_'. $author_id) ) : the_row();

                        if( get_row_layout() == 'social_media_icons' ): ?>

                            <?php if (get_sub_field('media_facebook')) { ?>
                            <li class="author-profile__social-item"><a rel="noopener noreferrer" href="<?php echo get_sub_field('media_facebook'); ?>" class="author-profile__social-anchor" target="_blank"><i class="fa fa-facebook" aria-hidden="true"></i></a></li> 
                            <?php } ?>

                            <?php if (get_sub_field('media_twitter')) { ?>
                            <li class="author-profile__social-item"><a rel="noopener noreferrer" href="<?php echo get_sub_field('media_twitter'); ?>" class="author-profile__social-anchor" target="_blank"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
                            <?php } ?>

                            <?php if (get_sub_field('media_github')) { ?>
                            <li class="author-profile__social-item"><a rel="noopener noreferrer" href="<?php echo get_sub_field('media_github'); ?>" class="author-profile__social-anchor" target="_blank"><i class="fa fa-github" aria-hidden="true"></i></a></li>
                            <?php } ?>

                            <?php if (get_sub_field('media_linkedin')) { ?>
                            <li class="author-profile__social-item"><a rel="noopener noreferrer" href="<?php echo get_sub_field('media_linkedin'); ?>" class="author-profile__social-anchor" target="_blank"><i class="fa fa-linkedin-square" aria-hidden="true"></i></a></li>
                            <?php } ?>

                            <?php if (get_sub_field('media_google')) { ?>
                            <li class="author-profile__social-item"><a rel="noopener noreferrer" href="<?php echo get_sub_field('media_google'); ?>" class="author-profile__social-anchor" target="_blank"><i class="fa fa-google-plus-official" aria-hidden="true"></i></a></li>
                            <?php } ?>

                            <?php if (get_sub_field('media_reddit')) { ?>
                             <li class="author-profile__social-item"><a rel="noopener noreferrer" href="<?php echo get_sub_field('media_reddit'); ?>" class="author-profile__social-anchor" target="_blank"><i class="fa fa-reddit-alien" aria-hidden="true"></i></i></a></li>
                            <?php } ?>

                            <?php if (get_sub_field('media_personal_website')) { ?>
                             <li class="author-profile__social-item"><a rel="noopener noreferrer" href="<?php echo get_sub_field('media_personal_website'); ?>" class="author-profile__social-anchor" target="_blank"><i class="fa fa-globe" aria-hidden="true"></i></a></li>
                            <?php } ?>

                        <?php endif; ?>
                  <?php  endwhile;

                    else :
                        echo 'no content';
                    endif;


                endwhile; // End of the loop.

                ?>

Тем не менее, что это, но это показывает 3 раза каждый.

Таким образом, он показывает Facebook, GIT, Линке, Facebook, GIT, Линке, Facebook, GIT, Линке

Это не показывает те, где значение не установлено.

Как я могу не заставить их повторять тех, кто настроен?

ACF Flexible Content

1 ответ

Попробуйте функцию PHP empty проверить, есть ли значение.

<?php if (!empty(get_sub_field('media_google'))) { ?>
<li class="author-profile__social-item"><a rel="noopener noreferrer" href="<?php echo esc_url( get_sub_field('media_google') ); ?>" class="author-profile__social-anchor" target="_blank"><i class="fa fa-google-plus-official" aria-hidden="true"></i></a></li>
<?php } ?>

Я не думаю, что get_sub_field экранирует ваш вывод, поэтому вы должны использовать функцию esc_attr при отображении значений. Здесь написана классная вспомогательная функция, которую вы можете использовать в противном случае, просто используйте встроенные функции WordPress.

Другие вопросы по тегам