it-swarm.com.de

Benutzerdefiniertes Feld-Meta wird nicht angezeigt, wenn es keine Daten enthält

Ich habe derzeit ein benutzerdefiniertes Feld, das angezeigt wird, auch wenn beim Posten keine Daten in die Meta-Box eingegeben wurden.

 enter image description here 

Wie entferne ich hr, title und ul, wenn keine Daten eingegeben wurden? Hier ist der Code, den ich derzeit in das benutzerdefinierte Feld ziehen muss:

<?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

Möglicherweise werden Zeilen zurückgegeben für:

have_rows('google_drive_links')

aber dann kehrte nichts für die Unterfelder zurück?

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

Vielleicht könnten Sie für diese beiden einen zusätzlichen Scheck einreichen, bevor Sie die hr und ul erstellen?

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

Abhängig von der Position, an der die Zeichen hr und h3 angezeigt werden sollen, sieht dies möglicherweise folgendermaßen aus:

<?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; ?>

Wenn mehrere Linkreihen vorhanden sind, sollte es möglich sein, einen Zähler hinzuzufügen, um sicherzustellen, dass die Stunde und der Titel nur einmal hinzugefügt werden. Beispiel:

<?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