对多个元密钥值运行检查

时间:2012-10-12 作者:kristina childs

我花了很长时间让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; ?> 

1 个回复
最合适的回答,由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;
?>

结束

相关推荐

ADD_REWRITE_RULE()与$wp_REWRITE->RULES VS‘REWRITE_RULES_ARRAY’?

我已经为我的自定义帖子类型编写了重写规则。它们工作得很好,只是当重定向url与请求的url不匹配时,WP不会更新用户代理中的url。尽管包括我的自定义permastructs(“post\\u type\\u link”)和自定义模板选项(“single-template”),其他一切都很好。我的规则:// custom URL rewrite for Album posts add_action( \'init\', \'gregory_rewrite_album_link\' ); f