如何比较WordPress管理员中的两个复选框数组

时间:2014-09-20 22:41:36

标签: php html wordpress

我有一个前端表单提交到我的自定义帖子类型和复选框。 <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循环内,但不知道可能是什么。

1 个答案:

答案 0 :(得分:0)

快速编辑。找到解决方案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;

    }