自定义发布类型-如何获取复选框以将元字段更新为空

时间:2012-02-07 作者:javy

我在Wordpress中有7个自定义帖子类型的元字段。这7天尤其是一周中的几天(周日到周六),并且每个天都有复选框。当值为“On”时,我成功地获得了要发布的复选框,但是当我返回到编辑页面并尝试取消选择时,该值在数据库中保持不变。

以下是我对每个项目输入的内容:

 <li><input type="checkbox" name="sunday" <?php if( $meta_sunday == true ) { ?>checked="checked"<?php } ?>" /> Sunday<br /></li>
和我的更新行:

if(!isset($_POST["sunday"])):
    return $post;
    endif;
    update_post_meta($post->ID, "sunday", $_POST["sunday"] );

3 个回复
最合适的回答,由SO网友:Ryan Meier 整理而成

当复选框未选中时,似乎未清除“星期日”的post meta。

If( isset($_POST[\'sunday\']) ){
    update_post_meta($post->ID, "sunday", $_POST["sunday"] );
}else{
    delete_post_meta($post->ID, "sunday");
}
return $post;
也可以将该值设置为false

If( isset($_POST[\'sunday\']) ){
    update_post_meta($post->ID, "sunday", true );
}else{
    update_post_meta($post->ID, "sunday", false );
}
return $post;

SO网友:Shane

未选中的复选框不会在$\\u帖子中设置,因此您必须清空它们的元字段。

像这样的方法应该会奏效:

 $sunday = ( isset( $_POST[\'sunday\'] ) ) ? $_POST[\'sunday\'] : "";
 update_post_meta( $post->ID, \'sunday\', $sunday );

SO网友:Muti Ullah

未选中的复选框不会在$\\u帖子中设置,而是在$\\u请求中设置,您可以像这样设置自定义帖子类型的复选框值:

if ( isset( $_REQUEST[\'inprint\'] ) ) {
   update_post_meta($post_id, \'_inprint\', TRUE);
 } else {
   update_post_meta($post_id, \'_inprint\', FALSE);
 }
并获取如下复选框值:

global $post;

$inprint= get_post_meta($post->ID, \'_inprint\', true);

<input type="checkbox" name="inprint" value=\'1\'<?php checked(1, $inprint); ?> />

结束

相关推荐