get-a-post plugin (Plugin URI: http://guff.szub.net/get-a-post) modification to be able to choose how to sort and specify a status for the post/page. There optionals parameters in the function ($sort='DESC',$status='publish'), but you can change them. For example, if you want to have an intro post for a category; change is date so it's the older and put its status to DRAFT; and modify the template for the choose category to

posts; $now = current_time('mysql'); $name_or_id = ''; if(!$id || 'GETPOST' == $id) { if($wp_version >= 2.1) $query_suffix = "post_type = 'post'"; } elseif ('GETPAGE' == $id) { if($wp_version < 2.1) $query_suffix = "post_status = 'static'"; else $query_suffix = "post_type = 'page'"; } elseif ('GETSTICKY' == $id) { if($wp_version < 1.5) $table .= ', ' . $tablepostmeta; else $table .= ', ' . $wpdb->postmeta; $query_suffix = "ID = post_id AND meta_key = 'sticky' AND meta_value = 1"; } else { $query_suffix = "(post_status = '".$status."' OR post_status = 'static')"; if(is_numeric($id)) { $name_or_id = "ID = '$id' AND"; } else { $name_or_id = "post_name = '$id' AND"; } } if ($status != 'NONE') { $query_suffix .= " AND post_status = '".$status."'"; } $post = $wpdb->get_row("SELECT * FROM $table WHERE $name_or_id post_date <= '$now' AND $query_suffix ORDER BY post_date $sort LIMIT 1"); get_post_custom($post->ID); if($wp_version < 1.5) start_wp(); else setup_postdata($post); } ?>