如何显示保存的get_post_meta值复选框

问题描述:

如何显示保存的复选框值或者是否未保存在wordpress中;如何显示保存的get_post_meta值复选框

例如:

<?php 
if($field_name_21=="bathrooms") echo 'Yes have bathrooms'; 
else { echo 'No have bathrooms; } 
if($field_name_21=="wc") echo 'Yes have wc'; 
else { echo 'No have wc; } 
?> 
+0

你能更加描述你的问题吗? –

+0

尝试echo'$ field_name_21'中的值以显示已存储的值(假设您将某个变量填充到该变量中)。这样,你就会知道在你的'if'语句中使用什么字符串。此外,您在“没有浴室”后错过了结束报价,这可能是您的问题 – Hobo

+0

我该怎么办? – Paris

我很抱歉,我还是不太清楚你究竟是如何有存储你的数据。我可以看到三种可能性;如果这些都不适用于您的情况,请让我知道我出错的地方。

选项1

你必须每个属性的一个meta值(例如,“WC”被存储在与field_name_1一个meta_value,“浴室”存储在与field_name_2一个meta_value,依此类推)。

<?php 
$field_descriptions = array(
    'field_name_1' => 'wc', 
    'field_name_2' => 'bathrooms', 
    'field_name_3' => 'bedrooms' 
); 

foreach ($field_descriptions as $field_name => $description) { 
    $value = get_post_meta($post->ID, $field_name, true); 

    if ($value) { 
     echo 'Yes have ' . $description; 
    } 
    else { 
     echo 'No have ' . $description; 
    } 
} 
?> 

选项2

你有一个meta值(如称为field_name),它可以有几个值存储在它,用分隔符(如|)。例如,存储的值可能看起来像wc|bedrooms。这似乎不太可能,因为你的问题提到了一个保存的复选框,但根据你的评论,它可能是你在做什么。

<?php 
$possible_values = array('wc', 'bathrooms', 'bedrooms'); 
$stored_values = explode('|', get_post_meta($post->ID, 'field_name', true)); 

foreach ($possible_values as $possible_value) { 
    if (in_array($possible_value, $stored_values)) { 
     echo 'Yes have ' . $possible_value; 
    } 
    else { 
     echo 'No have ' . $possible_value; 
    } 
} 
?> 

选项3

你有一个meta值(如称为field_name),它可以有 “WC” 或 “浴室”,或 “卧室”。这似乎不太可能,但为了完整起见,我将它包括在内。

<?php 
$possible_values = array('wc', 'bathrooms', 'bedrooms'); 
$stored_value = get_post_meta($post->ID, 'field_name', true); 

foreach ($possible_values as $possible_value) { 
    if ($stored_value == $possible_value) { 
     echo 'Yes have ' . $possible_value; 
    } 
    else { 
     echo 'No have ' . $possible_value; 
    } 
} 
?> 
+0

非常感谢你的努力! 我可以说我们非常接近,我选择了选项2,这在逻辑上使我们在**分裂**上跳动**警告:split():REG_EMPTY'我给你一张他的wordpress数据库的图片,它保存了数据: [link](http://oi58.tinypic.com/2q38xlv.jpg) – Paris

+0

啊 - 对不起,我的意思是使用'explode()',而不是'split()'('split'需要一个正则表达式)。我已经更新了我的答案。由于某种原因无法看到图像 – Hobo

+0

只需再次检查图像,我现在就可以看到它。唯一可能改变的是你可能需要在'explode('|''调用中有一个空格,或者你可以使用正则表达式(如果你对它们很熟悉)和['preg_split'](http ://php.net/manual/en/function.preg-split.php)函数而不是'explode()'。 – Hobo