web-dev-qa-db-ja.com

データがない場合にカスタムフィールドメタを表示しないようにする

投稿時にメタボックスに入力されたデータがなくても表示されているカスタムフィールドが現在あります。

enter image description here

データが入力されていない場合、hr、title、およびulを削除する方法これが私が現在カスタムフィールドに取り込まなければならないコードです:

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

以下の行が返されている可能性があります。

have_rows('google_drive_links')

しかし、その後、サブフィールドには何も返されませんか。

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

Hrとulを作成する前に、これら2つの追加チェックを行うことができるでしょうか。

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

Hrとh3をどこに表示するかに応じて、おそらく次のようになります。

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

複数行のリンクがある場合は、hrとtitleが一度だけ追加されるようにカウンタを追加することが可能です。次に例を示します。

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