IF the Categories that actually hold the Products use those Categories as their master_categories_id then you could customize the
/includes/modules/shipping/usps.php
with something like:
[B] $cost = preg_replace('/[^0-9.]/', '', $cost);
[/B]
// bof: do not show MEDIA MAIL for master_categories_id 10, 12 and 22
$chk_nonmedia_cat = 0;
$chk_nonmedia_cat += $_SESSION['cart']->in_cart_check('master_categories_id', '10');
$chk_nonmedia_cat += $_SESSION['cart']->in_cart_check('master_categories_id', '12');
$chk_nonmedia_cat += $_SESSION['cart']->in_cart_check('master_categories_id', '22');
if ($type == 'MEDIA' && $chk_nonmedia_cat > 0) {
$skip_it = true;
} else {
$skip_it = false;
}
if (!$skip_it) {
$methods[] = array('id' => $type,
'title' => $title,
'cost' => ($cost * $shipping_num_boxes) + (MODULE_SHIPPING_USPS_HANDLING_METHOD == 'Box' ? MODULE_SHIPPING_USPS_HANDLING * $shipping_num_boxes : MODULE_SHIPPING_USPS_HANDLING) );
}
// eof: do not show MEDIA MAIL for master_categories_id 10, 12 and 22
[B] }
$this->quotes['methods'] = $methods;[/B]
where you can use the code:
$chk_nonmedia_cat += $_SESSION['cart']->in_cart_check('master_categories_id', '10');
for each of the Categories with the NON-Media Mail Products ...