2017-10-15 4 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]]) : '');