Выполните проверку на наличие нескольких значений мета-ключа
У меня чертовски много времени, чтобы wordpress правильно отображал все значения определенного мета-ключа. Интересно, не иду ли я в этом направлении неправильным путем?
Моя конечная цель - выполнить проверку, чтобы увидеть, есть ли в ключе более одного значения настраиваемого поля. Если есть, каждое значение должно быть указано с разделителем-запятой, но без запятой в последнем значении. Если нет, то запятая не должна использоваться. Я безуспешно пробовал два метода. Первый - это get_пост_мета:
<?php if(get_post_meta($post->ID, 'band', true)): ?>
<strong>Band:</strong> <?php echo get_post_meta($post->ID, 'band'); ?><br />
<?php endif; ?>
Согласно кодексу, это должно отображать все значения этого ключа, но вместо этого все, что он делает, - это эхо "массива". Если я изменю $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; ?>
Он возвращает только первое значение (но, по крайней мере, возвращает значение, а не слово "массив".
Второй метод, который я попробовал, который сработал, был get_post_custom_values. Это делает трюк, но я не могу понять, как а) выполнить проверку на наличие нескольких значений или б) не добавлять запятую в последнее значение.
<?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; ?>
1 answers
Используйте php implode
чтобы соединить элементы массива строкой:
<?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;
?>