Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress the_meta and get_post_meta-在自定义字段中隐藏空值_Wordpress - Fatal编程技术网

Wordpress the_meta and get_post_meta-在自定义字段中隐藏空值

Wordpress the_meta and get_post_meta-在自定义字段中隐藏空值,wordpress,Wordpress,如果自定义字段没有值,我试图隐藏它们的显示。如果我用的来显示它们,那么标题就会显示,无论自定义字段中是否有任何值 它生成以下html: <ul class="post-meta"> <li> <span class="post-meta-key">My Custom Field Title</span> </li> <li> </ul> 我的自定义字段标题 如果页面上没有内容,我真的不想要标题。所以

如果自定义字段没有值,我试图隐藏它们的显示。如果我用的来显示它们,那么标题就会显示,无论自定义字段中是否有任何值

它生成以下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的Echo(应用于帖子的自定义值)如下所示:

没有值:

  • 1-1343633746:1——现场_5014a45c9a2df——现场_5014a48c38f9d——现场_5014a48c2cc82
价值观:

  • 1-1343603999:1-3杯鸡蛋-field_5014a45c9a2df-field_5014a48c38f9d-2杯面粉-field_5014a48c2cc82
这可能是很长的路要走。它还显示“last edit”之类的值,而不仅仅是我输入测试的两个字段

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


谢谢

主题是否仅显示某些自定义字段?与其测试所有内容,为什么不测试这些特定的自定义字段是否为空

例如


您可以使用
empty()
检查空值,您可以检查字段是否以下划线开头(内部值如
\u edit\u 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/>');
            }
    }
?>


不幸的是,情况并非如此。例如,我有一个网站,在那里我为管理员安装了高级自定义字段,管理员不是我。如果我正在写一个主题供除我之外的任何其他管理员使用,那么我将不知道具体的字段名。奇怪的是,_meta足够聪明,可以分辨出差异,哪些是由admin添加的,但我不知道如何添加。这是返回非空字段的值-做得很好。现在,一旦我弄清楚如何取回标题,当字段不为空时,我将发布该解决方案。谢谢!:)如果按标题表示键名,则它们位于
$k
变量中。因此,您可以使用echo($k.:'.$c.'
显示它们
<?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/>');
            }
    }
?>