add_action( 'pre_get_posts', 'some_like_it_neat_filter_expired_posts' );
function some_like_it_neat_filter_expired_posts( $query ) {
// doesn't affect admin screens
if ( is_admin() )
return;
// check for main query
$key = 'some_like_it_neat_expire_post';
$expire_date = get_post_meta( get_the_id(), $key, true );
$today = current_time( 'timestamp', true );
if ( $query->is_main_query() && ( $expire_date !='' ) ) {
//filter out expired posts
$metaquery = array(
array(
'key' => 'some_like_it_neat_expire_post',
'value' => $key,
'compare' => '<',
'type' => 'NUMERIC',
)
);
$query->set( 'meta_query', $metaquery );
}
}