0

I've created a very complex custom post type system for a football website and am using custom meta boxes to store various match stats. To decide whether or not I should display a stat I check whether the data has been entered in the back end like this:

if (get_post_meta($post->ID, 'stat_red_h', true) || get_post_meta($post->ID, 'stat_red_a', true)){
    echo 'somestuff';
}

Where I echo the information within the if statement. However, in many cases the value for a stat is "0" and if "0" is entered for both the home and away stat then the row doesn't show, presumably because it counts it as empty.

How can I tell WordPress that entering "0" as a value does not count it as empty, but is a valid value? Perhaps some sort of:

if ($stat_red_h=='0') {
    $stat_red_h='REAL!!!';
}

In the functions file when saving the data? Perhaps you guys can help, this is the first time I've gone this deep into WordPress so I'm learning all the time.

Thanks, Mike

1
  • == compares values; === compares values and types. So if you're storing your values as strings (I think that's the default for update_post_meta()), you should be able to do something like if ( $stat_red_h === '0' ) { do_something; }.
    – Pat J
    Commented Aug 7, 2013 at 13:46

1 Answer 1

1

When using the == comparison, it compares the values at the same type. So 1 is equal to "1", and true. Likewise, 0 is equal to false.

Taking a deeper look into the return values of get_post_meta, we can see that using the $single=true 3rd argument returns a blank string ('') when no value is found, not false. So you should be checking to make sure THAT isn't the case.

$post_meta_h = get_post_meta( $post->ID, 'stat_red_h', true );
$post_meta_a = get_post_meta( $post->ID, 'stat_red_a', true );
if( $post_meta_h !== '' || $post_meta_a !== '' ) {
    // do something
}

Let me know if this doesn't work for you.

1
  • Thank you, that was exactly what I needed! As I said, I'm still learning so I appreciate that help (and from Pat J above). Thanks to both.
    – MikeyOh
    Commented Aug 8, 2013 at 8:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.