2017-10-15 21 views
0

ポストエディタにカスタムフィールドを追加して温度を数値として保存しました。 このフィールドに「15,2」や「15.2」と入力して投稿を保存すると、「152」として保存されます。WPカンマフォーマット番号をメタフィールドに保存するには

どうすれば修正できますか?

フォームのフィールド:クラス保存

<label for="temp_min">Temp Min.:</label><br /> 
    <input class="widefat" type="text" name="temp_min" id="temp_min" value="<?php echo esc_attr(get_post_meta($object->ID, '_temp_min', true)); ?>" size="30" /> 

 /* Get the posted data and sanitize it for use as an HTML class. */ 
    $new_meta_value = (isset($_POST[$fields[$i]]) ? sanitize_html_class($_POST[$fields[$i]]) : ''); 

    /* Get the meta key. */ 
    $meta_key = $meta_keys[$i]; 

    /* Get the meta value of the custom field key. */ 
    $meta_value = get_post_meta($post_id, $meta_key, true); 

    /* If a new meta value was added and there was no previous value, add it. */ 
    if ($new_meta_value && '' == $meta_value) 
    add_post_meta($post_id, $meta_key, $new_meta_value, true); 

    /* If the new meta value does not match the old value, update it. */ 
    elseif ($new_meta_value && $new_meta_value != $meta_value) 
    update_post_meta($post_id, $meta_key, $new_meta_value); 

    /* If there is no new meta value but an old value exists, delete it. */ 
    elseif ('' == $new_meta_value && $meta_value) 
    delete_post_meta($post_id, $meta_key, $meta_value); 
    } 

答えて

2

sanitize_html_classので、19.5または19.5を.,を削除する195

になりますダウン文字列をストリップAZ、az、0-9、_、 - 。

WPコーデックス:https://codex.wordpress.org/Function_Reference/sanitize_html_class

だけで使用sanitize_text_fieldまたは(float) $_POST[$fields[$i]]

/* Get the posted data and sanitize it for use as an HTML class. */ 
$new_meta_value = (isset($_POST[$fields[$i]]) ? sanitize_text_field($_POST[$fields[$i]]) : '');