Php 带有in_数组的WordPress检查函数
Wordpress插件。Php 带有in_数组的WordPress检查函数,php,wordpress,checkbox,checked,meta-boxes,Php,Wordpress,Checkbox,Checked,Meta Boxes,Wordpress插件。 我需要检查复选框的checked=“checked”。我将它们存储在一个数组中 我遇到的问题是,如果复选框被存储,它们不会“选中”复选框 public function display() { $html = ''; // Add an nonce field so we can check for it later. wp_nonce_field( basename( __FILE__ ), 'nonce_check_value' );
我需要检查复选框的
checked=“checked”
。我将它们存储在一个数组中
我遇到的问题是,如果复选框被存储,它们不会“选中”复选框
public function display() {
$html = '';
// Add an nonce field so we can check for it later.
wp_nonce_field( basename( __FILE__ ), 'nonce_check_value' );
$html .= '<label for="CMBUserBoxName">Name metabox: </label>';
$html .= '<input type="text" name="CMBUserBoxName" value="' . get_post_meta( get_the_ID(), 'CMBUserBoxName', true ). '">';
$data = get_post_meta(get_the_ID(), 'CMBUserRequestedOption');
echo '<pre>';
print_r($data);
echo '</pre>';
$html .= 'Radio: ';
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Radio]" value="1" '.checked( in_array( 1, $data ), 1, false ).' />';
$html .= '</br>';
$html .= 'Checkbox: ';
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Checkbox]" value="1" '.checked( in_array( 1, $data ), 1, false ).' />';
echo $html;
}
保存功能:
$data = Array(
'a:2:{s:5:"Radio";s:1:"1";s:8:"Checkbox";s:1:"1";}'
);
$data[0] = unserialize($data[0]);
我认为checked()
缺少一些内容。选中(在数组中(1,$data),1,false)
您的$data
包含一个字符串(在索引0
)。如果要检查它包含的数据,必须取消序列化
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Radio]" value="1" '.checked($data[0]['Radio'], 1, false).' />';
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Checkbox]" value="1" '.checked($data[0]['Checkbox'], 1, false).' />';
然后您可以使用checked($data[0]['Radio'],1,false)
:
$html.='';
$html.='';
或者,正如@Nawin所指出的,您可以获取值中的数据,而不是数组中的数据:
$data=get_post_meta(get_ID(),'CMBUserRequestedOption',true);
$data=取消序列化($data);
//已检查回波($data['Radio',1,false);
//已选中回显($data['Checkbox',1,false);
$html.='';
$html.='';
另请参见。您的
$data
包含一个字符串(在索引0
)。如果要检查它包含的数据,必须取消序列化
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Radio]" value="1" '.checked($data[0]['Radio'], 1, false).' />';
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Checkbox]" value="1" '.checked($data[0]['Checkbox'], 1, false).' />';
然后您可以使用checked($data[0]['Radio'],1,false)
:
$html.='';
$html.='';
或者,正如@Nawin所指出的,您可以获取值中的数据,而不是数组中的数据:
$data=get_post_meta(get_ID(),'CMBUserRequestedOption',true);
$data=取消序列化($data);
//已检查回波($data['Radio',1,false);
//已选中回显($data['Checkbox',1,false);
$html.='';
$html.='';
另请参见。您的
打印内容($data)代码>数据?请参阅更新的it阵列a:2:{s:5:“收音机”;s:1:“1”;s:8:“复选框”;s:1:“1”}
?是的。那么我遗漏了什么?不,那不是一个数组。。。试着像这样更改你的get post metaget\u post\u meta(get\u ID(),'CMBUserRequestedOption',true)
什么是你的print\r($data)代码>数据?请参阅更新的it阵列a:2:{s:5:“收音机”;s:1:“1”;s:8:“复选框”;s:1:“1”}
?是的。那么我遗漏了什么?不,那不是一个数组。。。尝试像这样更改get post metaget\u post\u meta(get\u ID(),'CMBUserRequestedOption',true)
感谢您的解释。如果我不检查任何内容并保存数据库中的值,则不会更新。所以出于某种原因,它总是需要选中一个选项?@Interactive我真的很抱歉,但我不知道Wordpress是如何工作的,也不知道它如何在数据库中保存发布的值。好的。也许还有一个问题。帮了我很多。竖起大拇指!谢谢你的解释。如果我不检查任何内容并保存数据库中的值,则不会更新。所以出于某种原因,它总是需要选中一个选项?@Interactive我真的很抱歉,但我不知道Wordpress是如何工作的,也不知道它如何在数据库中保存发布的值。好的。也许还有一个问题。帮了我很多。竖起大拇指!
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Radio]" value="1" '.checked($data[0]['Radio'], 1, false).' />';
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Checkbox]" value="1" '.checked($data[0]['Checkbox'], 1, false).' />';
$data = get_post_meta(get_the_ID(), 'CMBUserRequestedOption', true);
$data = unserialize($data);
// echo checked($data['Radio'], 1, false);
// echo checked($data['Checkbox'], 1, false);
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Radio]" value="1" '.checked($data['Radio'], 1, false).' />';
$html .= '<input type="checkbox" name="CMBUserRequestedOption[Checkbox]" value="1" '.checked($data['Checkbox'], 1, false).' />';