转发器中的链接

时间:2017-01-05 13:32:44

标签: php wordpress advanced-custom-fields

我在WordPress上使用ACF。

我做了一个转发器领域。除链接外,每个字段都可以正常工 下面的代码显示了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 个答案:

答案 0 :(得分: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>