I solved this problem by adding a little snippet of code to the wp-blog-header.php file. There is a section that tests for command line variables that are passed using superglobals and other variables. I added a test after each pass of this for/next loop to see if the $_GET[cat] was null, and if so, set it to my preferred category. The block of code is below with the obvious hack between comments:
$wpvarstoreset = array('m','p','posts','w', 'cat','withcomments','s','search','exact', 'sentence','poststart','postend','preview','debug', 'calendar','page','paged','more','tb', 'pb','author','order','orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'feed', 'author_name');
for ($i=0; $i<count($wpvarstoreset); $i += 1) {
$wpvar = $wpvarstoreset[$i];
if (!isset($$wpvar)) {
if (empty($_POST[$wpvar])) {
if (empty($_GET[$wpvar]) && empty($path_info[$wpvar])) {
$$wpvar = '';
} elseif (!empty($_GET[$wpvar])) {
$$wpvar = $_GET[$wpvar];
} else {
$$wpvar = $path_info[$wpvar];
}
} else {
$$wpvar = $_POST[$wpvar];
}
}
// add this test to set force the category value of your
// preferred category when no category is selected - like when
// you first visit the blog. This is the *cat_ID* field.
// I used a value of 1 which is my General category.
if ('' == $_GET[cat]) {
$_GET[cat] = '1';
}
// end of inserted category force-feeding.
}
If there is a better way, I’m all ears. I haven’t found this to break anything – yet. I’m using version 1.2.
Good Luck!