我在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; ?>">
但我不知道如何解决它。
答案 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>