2012-07-30 63 views
0

我試圖隱藏自定義字段的顯示,如果他們沒有值。如果我用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

這可能是很長的路要走了。它顯示了諸如「最後編輯」之類的值,而不僅僅是我放入測試的兩個字段。

如何只顯示自定義字段,如果他們有值?我正在寫一個主題,所以我不知道這些字段的名稱,或者事先知道了多少個字段。

謝謝!

回答

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

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 
} 
+0

不幸的是,這不是那樣的。例如,我有一個網站,我爲管理員安裝了高級自定義字段,他不是我。如果我正在編寫一個供除我自己以外的任何其他管理員使用的主題,那麼我將不知道具體的字段名稱。奇怪的是,** the_meta **足夠聰明地分辨出哪些是管理員添加的,但我不知道如何。 – 2012-07-30 09:16:00