You can do this with some fairly standard logic:
- check to see if the post_meta value is set
- check if this is a child, get the parent id, check if a post_meta value is set
Here's some code to show how this could work (within the loop):
if ( get_post_meta($post->ID, 'colour', TRUE) ) {
$colour = get_post_meta($post->ID, 'colour', TRUE);
} elseif ( $post->post_parent && get_post_meta($post->post_parent, 'colour', TRUE) ) {
$colour = get_post_meta($post->post_parent, 'colour', TRUE);
} else {
$colour = '#fff'; // could put a default value here
}
//do something with $colour variable
And when you're outside the loop you can use get_queried_object()
to access the post object. IE:
$queried_object = get_queried_object();
if ( get_post_meta($queried_object->ID, 'colour', TRUE) ) {
$colour = get_post_meta($queried_object->ID, 'colour', TRUE);
} elseif ( $queried_object->post_parent && get_post_meta($queried_object->post_parent, 'colour', TRUE) ) {
$colour = get_post_meta($queried_object->post_parent, 'colour', TRUE);
} else {
$colour = '#fff'; // could put a default value here
}
//do something with $colour variable