在页面上正确显示自定义域和值

时间:2013-08-01 作者:Ajj

我的产品有一个通过CSV加载的自定义字段值列表,但并非所有产品都有每个自定义字段的值,因为该字段与该产品无关。我希望能够调用每个产品页面上的每个相关自定义字段名称及其值。

我正在使用它,它会在页面上显示自定义字段值(仅):

<?php echo get_post_meta( get_the_ID(), \'current_promotions\', true ); ?>
但是,我希望在适当的情况下显示每个产品的字段名称和值。

有人能帮忙吗?

1 个回复
SO网友:Krzysiek Dróżdż

您可以使用<?php the_meta(); ?> 为此(您要在循环中打印它们的id)。

抄本:

这是一个简单的内置函数,用于显示当前帖子的自定义字段,称为“post meta”(存储在wp\\u postmeta表中)。它将数据格式化为无序列表(请参见下面的输出)。

它必须在循环中使用,或者在处理单个帖子数据的主题文件中使用(例如single.php)。\\u meta()将忽略以下划线开头的meta\\u键(即字段名)。

因此:

<p>Meta information for this post:</p>
<?php the_meta(); ?>
将输出以下内容:

<ul class=\'post-meta\'>
    <li><span class=\'post-meta-key\'>your_key:</span> your_value</li>
    ... other fields
</ul>
当然,您也可以这样做(定制此代码要容易得多):

if ( $keys = get_post_custom_keys($post_id) ) {  // $post_id is ID of your post
    echo "<ul class=\'post-meta\'>\\n";
    foreach ( (array) $keys as $key ) {
        $keyt = trim($key);
        if ( is_protected_meta( $keyt, \'post\' ) )
            continue;
        $values = array_map(\'trim\', get_post_custom_values($key));
        foreach ( $values as $k=>$value ) {
            if ( $value == \'\' ) {  // or whatever is your way to find if value is irrelevant
                unset($values[$k]);
            }
        }
        $value = implode($values,\', \');
        echo apply_filters(\'the_meta_key\', "<li><span class=\'post-meta-key\'>$key:</span> $value</li>\\n", $key, $value);
    }
    echo "</ul>\\n";
}

结束

相关推荐