ワードプレスのカスタムフィールドキーを一覧表示するphpimplode関数があります。問題は、Web URLをhrefでラップしてクリック可能にする必要があり、関数sytnaxに頭をラップできないことです。キー値は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; ?>
ただし、コンマで区切られた複数のエントリを保持できる必要があります。動作するコードは次のとおりですが、クリック可能なURLは出力されません。
<?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のみを出力します。
- - - - - - - - - - - 編集 - - - - - - - - - - - - -
甲斐の答えが一番近いので、答えをマークしましたが、ラベル変数は含まれていませんでした。それらの2つを結婚することによって私は美しく働くこの答えを思いついた
<?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 ?>