web-dev-qa-db-fra.com

Ne pas afficher la méta du champ personnalisé s'il n'y a pas de données dedans

J'ai actuellement un champ personnalisé qui s'affiche même s'il n'y a pas de données entrées dans la boîte méta lors de la publication.

 enter image description here 

Comment puis-je supprimer le hr, le titre et ul s'il n'y a pas d'entrée de données? Voici le code que j'ai actuellement pour extraire le champ personnalisé:

<?php if( have_rows('google_drive_links') ): ?>
<hr />
     <h3>Attachments</h3>
     <ul class="google-drive-links">
<?php while( have_rows('google_drive_links') ): the_row(); 
     // vars
     $content = get_sub_field('google_link_name');
     $link = get_sub_field('google_link'); ?>
     <li class="google-drive-link-item">
     <a target="_blank" href="<?php echo $link; ?>"><?php echo $content; ?></a>
    </li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
2
Collin

Il se peut que des lignes soient renvoyées pour:

have_rows('google_drive_links')

mais alors, rien n'est retourné pour les sous-champs?

$content = get_sub_field('google_link_name');
$link = get_sub_field('google_link'); 

Peut-être pourriez-vous mettre un chèque supplémentaire pour ces deux-là avant de créer les heures et les heures?

if (get_sub_field('google_link_name') &&  get_sub_field('google_link')){
   // Create the hr and ul 
}

Selon l'endroit où vous souhaitez que hr et h3 apparaissent, peut-être comme ceci:

<?php if( have_rows('google_drive_links') ): ?>
    <?php while( have_rows('google_drive_links') ): the_row();
         // vars
         $content = get_sub_field('google_link_name');
         $link = get_sub_field('google_link');
         if ($content && $link) : ?>
             <hr />
             <h3>Attachments</h3>
             <ul class="google-drive-links">
                 <li class="google-drive-link-item">
                     <a target="_blank" href="<?php echo $link; ?>"><?php echo $content; ?></a>
                 </li>
             </ul>
         <?php endif; ?>
     <?php endwhile; ?>
<?php endif; ?>

S'il y a plusieurs lignes de liens, il devrait être possible d'ajouter un compteur pour s'assurer que le hr et le titre ne sont ajoutés qu'une seule fois, par exemple:

<?php
$counter = 0;
if( have_rows('google_drive_links') ): ?>
    <?php while( have_rows('google_drive_links') ): the_row();
         // vars
         $content = get_sub_field('google_link_name');
         $link = get_sub_field('google_link');
         if ($content && $link) :
             $counter ++;
             // If there is content and link, create hr and title for first item only, open ul and create li
             if ($counter == 1) : ?>
                 <hr />
                 <h3>Attachments</h3>
                 <ul class="google-drive-links">
             <?php endif; ?>
             <li class="google-drive-link-item">
                 <a target="_blank" href="<?php echo $link; ?>"><?php echo $content; ?></a>
             </li>
         <?php endif; ?>
      <?php
      endwhile;
      if ($counter > 0) : ?>
          <!-- Close ul -->
          </ul>
      <?php endif; ?>
  <?php endif; ?>
1
junkrig