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

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/>'); 
      } 
    } 
?> 
+0

这是返回非空字段的值 - 很好地完成。现在,一旦我找出如何获得标题,当字段不是空的时候,我就会发布该解决方案。谢谢! :) – 2012-07-30 09:22:45

+0

如果您指的是按标题显示的关键字名称,那么它们位于'$ k'变量中。所以你可以显示它们,也许用'echo($ k。':'。$ c。'
');' – gregn3 2012-07-30 09:26:41

+0

这个作品,谢谢! – 2012-07-30 09:31:10

您的主题只显示某些自定义字段吗?而不是测试一切,为什么不测试这些特定的自定义字段是否为空?

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