2017-01-05 5 views
1

Я использую ACF на WordPress.Ссылки в репитере

Я сделал поле ретранслятора. Все поля отлично работают, кроме ссылок. Код ниже показывает имя URL, но имя не имеет ссылки!

<?php if(have_rows('dl_box')): ?> 

    <ul> 

    <?php while(have_rows('dl_box')): the_row(); 

     // vars 
     $content = get_sub_field('dl_link_name'); 
     $link = get_sub_field('dl_url'); 

     ?> 

     <li> 
     <span class="link"> 
      <?php if($link): ?> 
       <a href="<?php echo $url; ?>"> 
      <?php endif; ?> 
         <?php if($link): ?> 
      </a> 

      <?php endif; ?> 
    <?php echo $content; ?> 

    </span> 
     </li> 

    <?php endwhile; ?> 

    </ul> 

<?php endif; ?> 

Я думаю, что это из-за этой линии

<a href="<?php echo $url; ?>"> 

, но я не знаю, как это исправить.

ответ

1

Измените разметку следующим образом. Вы пытаетесь получить доступ к переменным, которые не были объявлены, и логика из последовательности:

<li> 
    <span class="link"> 
     <?php 
     // $link is the URL (from "dl_url") 
     // If there is a URL, output an opening <a> tag 
     if($link) { 
      echo '<a href="' . $link . '">'; 
     } 
     // $content is the name (from "dl_link_name") 
     // always output the name 
     echo $content; 
     // If there is a URL, need to output the matching closing <a> tag 
     if($link) { 
      echo '</a>'; 
     } 
    </span> 
</li> 

Примечание:
я научился любить разметки/логики, как, что - это не делает много смысла. Я бы предпочел сделать что-то вроде этого: это проще, легче читать и более компактно:

<li> 
    <span class="link"> 
     <?php 
     // if there is a url, output the ENTIRE link 
     if ($link) { 
      echo '<a href="' . $link . '">' . $content . '</a>'; 
     // otherwise just output the name 
     } else { 
      echo $content; 
     } ?> 
    </span> 
</li> 
Смежные вопросы