How do i validate data entered in a meta box so that only floats can be entered in a field?

We have a custom post type in our plugin and now i must provide the user a meta box where he enters latitude and longitude. I want them to be floats, i have no problems in doing the validation client side, but i don’t know how i should handle server side validation in wordpress.

I thought that there was some API for doing this, but this is not the case, so i was just wandering how should i handle things inside my save function.

Related posts

Leave a Reply

1 comment

  1. Not shure if this isn´t a general php question…

    Use the WP_Error Class.

    // http://php.net/manual/de/function.is-float.php
    // http://php.net/manual/de/function.is-int.php
    // inside your save_post/update_post hooks callback function,
    // just type cast to float. You could also do a check if it contains non numeric chars
    // and then simply return;
    $check = ! is_float( $value ) OR ! is_int( $value ) ? new WP_Error( 'wrong value', __(" I've fallen and can't get up", 'YOUR_TEXTDOMAIN_STRING' ), $value ) : $value;
    

    At the end of your function, check if you got an error. To provide a meaningful error message, use jQuery:

    if ( is_wp_error( $check ) )
    {
        $code = $check->get_error_code();
        $msg = $check->get_error_message();
        // Maybe multiple? You'll have to loop through them
        $msgs = $check->get_error_messages();
    
        echo "<script type='text/javascript'>
             var error = '<div id="message" class="updated below-h2"><p><strong>{$code}</strong> {$msg}</p></div>';
             // Append the error
             jQuery( '#icon-edit' ).after( error );
        </script>";
    }