【发布时间】:2012-10-12 23:49:54
【问题描述】:
我有一个 php 内爆函数来列出 wordpress 自定义字段键,效果很好。问题是我需要将 web url 包装在 href 中以使它们可点击,并且无法将我的头包裹在函数 sytnax.xml 中。键值的格式为 www.site.com,因此我将其设置为单个条目,如下所示:
<?php if(get_post_meta($post->ID, 'website', true)): ?>
<strong>Website:</strong> <a href="http://<?php echo get_post_meta($post->ID, 'website', true); ?>" target="_blank"><?php echo get_post_meta($post->ID, 'website', true); ?></a>
<?php endif; ?>
但现在我们需要能够保存多个用逗号分隔的条目。这是有效的代码,但不输出可点击的网址:
<?php
if( $website = get_post_meta($post->ID, 'website') ):
$label = count( $website ) > 1 ? 'Websites' : 'Website';
?>
<strong><?php echo $label; ?>:</strong> <?php echo implode( $website, ', ' ); ?><br />
<?php
endif;
?>
这是我一直在玩的,这显然是错误的
<?php echo '<a href="http://' . implode('" target="_blank">', $website) . "</a>" . ', '; ?><br />
即使它确实工作了,它也只会输出 url,而不是链接的文本。
---------- 编辑 -------------
Kai 的答案最接近,所以我将其标记为答案,但它不包含 label 变量。通过与他们中的两个结婚,我想出了这个很好用的答案
<?php
if( $website = get_post_meta($post->ID, 'website') ):
$label = count( $website ) > 1 ? 'Websites' : 'Website';
$links = array_map(
function($url) {
$url = htmlspecialchars($url);
return sprintf ('<a href="http://%s">%s</a>', $url, $url);
},
$website);
?>
<strong><?php echo $label; ?>:</strong> <?php echo implode(', ', $links); ?><br />
<?php endif ?>
【问题讨论】: