Adding multiple conditional tags in a function?

You want to put those category IDs into an array really, the IF can only handle one condition at a time, so you could change your if statement to be:

if( is_category('16') || is_category('12') ) {

In PHP, the || stands for OR, whilst && stands for AND, so your if statement is saying if category 16, OR category 12 in the above.

However, it makes more sense to do an array and loop through it, so you end up with something like this:

add_filter( 'generate_blog_columns','tu_portfolio_columns' );
function tu_portfolio_columns( $columns ) {
    $cats = array('16', '12', '45');

    foreach($cats as $cid) {
        if ( is_category( $cid ) ) {
            return true;
        }
    }

    return $columns;
}

It is untested, but I think it should do the trick for you… In line 3 we are creating the array of category IDs that you want, and then on line 5 we are putting that array into a foreach loop so each ID can be called once at a time. Then within that is your IF statement as it was which retrieves the current loop iterations category ID and checks it using WP’s is_category function.