Выполните проверку на наличие нескольких значений мета-ключа


У меня чертовски много времени, чтобы 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; ?> 
Author: kristina childs, 2012-10-12

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;
?>
 1
Author: Milo, 2012-10-12 21:15:12