а зачем два раза вызывать
get_posts
?
$args = get_posts( array( // первый раз
'numberposts' => 2,
'post_type' => 'portfolio',
'suppress_filters' => true,
) );
$posts = get_posts( $args ); // второй раз
получается что второй раз он вызывается с дефолтными значениями.