我花了很长时间让wordpress正确显示某个元键的所有值。我想知道我是不是走错了路?
我的最终目标是运行一个检查,查看一个键中是否有多个自定义字段值。如果有,则应使用逗号分隔符列出每个值,但在最后一个值上不使用逗号。如果没有,则不应使用逗号。我试过两种方法都没有成功。第一个是get\\u post\\u meta:
<?php if(get_post_meta($post->ID, \'band\', true)): ?>
<strong>Band:</strong> <?php echo get_post_meta($post->ID, \'band\'); ?><br />
<?php endif; ?>
根据codex,这应该显示该键的所有值,但它所做的只是回显“数组”。如果我将$Single更改为true,如下所示:
<?php if(get_post_meta($post->ID, \'band\', true)): ?>
<strong>Band:</strong> <?php echo get_post_meta($post->ID, \'band\', true); ?><br />
<?php endif; ?>
它只返回第一个值(但至少返回值,而不返回单词“array”)。
我尝试的sorta工作的第二种方法是get\\u post\\u custom\\u值。这就成功了,但我不知道如何a)检查多个值,或b)避免在最后一个值上添加逗号。
<?php if(get_post_meta($post->ID, \'gear\', true)): ?>
<strong>Gear: </strong>
<?php
$mykey_values = get_post_custom_values(\'gear\');
foreach ( $mykey_values as $key => $value ) {
echo "$value, ";
}
?>
<?php endif; ?>
最合适的回答,由SO网友:Milo 整理而成
使用phpimplode
要使用字符串连接数组元素,请执行以下操作:
<?php
if( $bands = get_post_meta($post->ID, \'band\') ):
?>
<strong>Band:</strong> <?php echo implode( $bands, \', \' ); ?><br />
<?php
endif;
?>
编辑-上述的另一个版本,根据单个或多个元值将标签多元化:
<?php
if( $bands = get_post_meta($post->ID, \'band\') ):
$label = count( $bands ) > 1 ? \'Bands\' : \'Band\';
?>
<strong><?php echo $label; ?>:</strong> <?php echo implode( $bands, \', \' ); ?><br />
<?php
endif;
?>