我有一个前端表单提交给我的自定义帖子类型和里面的复选框。
<input type="checkbox" name="_my_checkbox[]" value="Yes"/> Yes
<input type="checkbox" name="_my_checkbox[]" value="No"/> No
<input type="checkbox" name="_my_checkbox[]" value="Maybe"/> Maybe
之后我把它保存为post-meta。然后我需要管理处理这些帖子和价值观。就我所尝试的而言,只完成了保存和操作一个值。我想问题出在数组中。在这里,它是显示元框的函数的一部分。
$get_my_meta = get_post_meta($post->ID, 'my_meta', true);
$get_my_meta_data = array('Yes','No','Maybe');
foreach ($get_my_meta_data as $key => $value) { ?>
<input type="checkbox" name="_admin_my_checkbox[]" value="<?php echo $value;?>"<?php if($value == $get_my_meta){echo 'checked';} ?> /><?php echo $value;
}`
然后是保存功能
if($_POST['_admin_my_checkbox']) {
$my_checkbox_updater = $_POST['_admin_my_checkbox'];
update_post_meta($post_id, 'my_meta', $my_checkbox_updater);
}
在这种情况下,当我选中一些复选框并使用print_r
时,值会按预期保存。我想问题出在foreach
循环中,但不知道可能是什么。
快速编辑。找到解决方案。in_array()
功能完美地完成了这项工作。
foreach ($get_my_meta_data as $key => $value) { ?>
<input type="checkbox" name="_admin_my_checkbox[]" value="<?php echo $value;?>"<?php if(in_array($value,$get_my_meta)){echo 'checked';} ?> /><?php echo $value;
}