我试图隐藏自定义字段的显示,如果它们没有值。如果我使用 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的回声(应用于帖子的自定义值)如下所示:
没有值:
使用值:
这可能还有很长的路要走。它也显示了“最后编辑”之类的值,而不仅仅是我投入测试的两个字段。
如果自定义字段有值,我怎么才能显示它?我正在写一个主题,所以我事先不知道这些字段的名称,或者多少。
谢谢!
答案 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/>');
}
}
?>