Wordpress the_meta和get_post_meta-隐藏自定义字段中的空值
问题描述:
我试图隐藏自定义字段的显示,如果他们没有值。如果我用the_meta显示它们,则标题将显示自定义字段中是否有任何值。Wordpress the_meta和get_post_meta-隐藏自定义字段中的空值
它产生这个网站:
<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
这可能是很长的路要走了。它显示了诸如“最后编辑”之类的值,而不仅仅是我放入测试的两个字段。
如何只显示自定义字段,如果他们有值?我正在写一个主题,所以我不知道这些字段的名称,或者事先知道了多少个字段。
谢谢!
答
你可以用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/>');
}
}
?>
答
您的主题只显示某些自定义字段吗?而不是测试一切,为什么不测试这些特定的自定义字段是否为空?
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
}
+0
不幸的是,这不是那样的。例如,我有一个网站,我为管理员安装了高级自定义字段,他不是我。如果我正在编写一个供除我自己以外的任何其他管理员使用的主题,那么我将不知道具体的字段名称。奇怪的是,** the_meta **足够聪明地分辨出哪些是管理员添加的,但我不知道如何。 – 2012-07-30 09:16:00
这是返回非空字段的值 - 很好地完成。现在,一旦我找出如何获得标题,当字段不是空的时候,我就会发布该解决方案。谢谢! :) – 2012-07-30 09:22:45
如果您指的是按标题显示的关键字名称,那么它们位于'$ k'变量中。所以你可以显示它们,也许用'echo($ k。':'。$ c。'
');' – gregn3 2012-07-30 09:26:41
这个作品,谢谢! – 2012-07-30 09:31:10