0

如果自定义字段没有值,我会尝试隐藏它们的显示。如果我用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

这可能是很长的路要走。它也显示了诸如“上次编辑”之类的值,而不仅仅是我输入测试的两个字段。

仅当自定义字段具有值时,我如何才能显示它们?我正在写一个主题,所以我事先不知道字段的名称或数量。

谢谢!

4

2 回答 2

0

您的主题是否仅显示某些自定义字段?与其针对所有内容进行测试,不如直接针对这些特定的自定义字段是否为空进行测试?

例如

$item = get_post_meta($post_id, "custom_field_1", true);
if (!empty($item)) { // if that field has something
    [...]            // display what you need to
}
于 2012-07-30T09:07:35.940 回答
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/>');
            }
    }
?>
于 2012-07-30T09:16:22.450 回答