Saving zero in meta box

时间:2013-05-03 作者:markb

因此,我创建了一个元框用于评估。有时,评分值(5分之一)为零。

在输入中输入0并保存数据时,不会进行处理,因为0在语句中也表示false:

if ($meta_value) ...
我想知道是否有人知道保存零值的方法?

我找到的唯一答案是输入0x0,然后将其转换(根据:https://wordpress.stackexchange.com/a/96536/17411), 但对用户来说,解释一下,然后再让他们记住,这似乎是一项令人困惑的任务。。

这是我的save\\u元:

function save_custom_meta($post_id) {
    global $meta_review_fields_1;

// Verify nonce
if (!wp_verify_nonce($_POST[\'custom_meta_box_nonce\'], basename(__FILE__)))   
    return $post_id;  

// Check autosave
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE)
    return $post_id;

// Check permissions
if (\'page\' == $_POST[\'post_type\']) {
    if (!current_user_can(\'edit_page\', $post_id))
        return $post_id;
    } elseif (!current_user_can(\'edit_post\', $post_id)) {
        return $post_id;
}


// Loop and save: Review
foreach ($meta_review_fields_1 as $field_1) {
    $old_1 = get_post_meta($post_id, $field_1[\'id\'], true);
    $new_1 = $_POST[$field_1[\'id\']];
    if ($new_1 && $new_1 != $old_1) {
        update_post_meta($post_id, $field_1[\'id\'], $new_1);
    } elseif (\'\' == $new_1 && $old_1) {
        delete_post_meta($post_id, $field_1[\'id\'], $old_1);
    }
}
请注意,如果为空,我需要它删除其他字段的内容,只需要允许值为0的评级输入。

1 个回复
SO网友:Rarst

您的问题似乎是逻辑检查过于松散,而不是保存。

要正确处理有效但错误的值,您需要以下内容:

if ( false !== $meta_value )
仅当值不包含false (获取失败时返回API)。

结束