Wordpress the_meta和get_post_meta-隐藏自定义字段中的空值

时间:2012-07-30 08:58:25

标签: wordpress

我试图隐藏自定义字段的显示,如果它们没有值。如果我使用 the_meta 显示它们,则标题会显示,自定义字段中是否有任何值。

它生成这个html:

<ul class="post-meta">
<li>
<span class="post-meta-key">My Custom Field Title</span>
</li>
<li>
</ul>

如果没有内容,我真的不想要页面上的标题。所以我试过了:

<?php
$ck = get_post_custom_keys($post_id); //Array
    foreach ($ck as $k) {
         $cv = get_post_custom_values($k, $post_id );  //Array
            foreach ($cv as $c) {
                echo (' - ');
                echo ($c);
            }
    }
?>

$ c的回声(应用于帖子的自定义值)如下所示:

没有值:

  • 1 - 1343633746:1 - - field_5014a45c9a2df - field_5014a48c38f9d - - field_5014a48c2cc82

使用值:

  • 1 - 1343603999:1 - 3杯鸡蛋 - field_5014a45c9a2df - field_5014a48c38f9d - 2杯面粉 - field_5014a48c2cc82

这可能还有很长的路要走。它也显示了“最后编辑”之类的值,而不仅仅是我投入测试的两个字段。

如果自定义字段有值,我怎么才能显示它?我正在写一个主题,所以我事先不知道这些字段的名称,或者多少。

谢谢!

2 个答案:

答案 0 :(得分:0)

您的主题是否仅显示某些自定义字段?而不是测试所有内容,为什么不测试这些特定的自定义字段是否为空?

E.g。

$item = get_post_meta($post_id, "custom_field_1", true);
if (!empty($item)) { // if that field has something
    [...]            // display what you need to
}

答案 1 :(得分:0)

您可以使用empty()检查空值,您可以检查字段是否以下划线开头(内部值如_edit_last)并跳过这些值。

<?php
$ck = get_post_custom_keys($post_id); //Array
    foreach ($ck as $k) {
         if (substr ($k, 0, 1) == '_')
         {   // skip keys starting with '_'
             continue;
         }
         $cv = get_post_custom_values($k, $post_id );  //Array
            foreach ($cv as $c) {
                if (empty ($c))
                {   // skip empty value
                    continue;
                }

                echo ($k . ': ' . $c . '<br/>');
            }
    }
?>