Из документации:
'number'
(int|string) Maximum number of terms to return. Accepts ''|0 (all) or any positive number. Default ''|0 (all).
То есть, вот так:
$args = array(
...
'number' => 10, // нужное количество (максимальное)
...
);
$cats = get_categories($args);
Это что касается вашего прямого вопроса. А также, не нужно делать вот это:
$category = get_term($cat)
и вот это:
echo get_cat_name($category->term_id);
потому что функцией get_categories() вы уже получили массив объектов WP_Term, которые содержат все необходимые данные. Вот вам отрефакторенный код, который не делает ничего лишнего:
$args = array(
'parent' => 0,
'hide_empty' => 0,
'exclude' => array( 11, 1 ),
'number' => 10,
'taxonomy' => 'category',
'posts_per_page' => 1,
'pad_counts' => true
);
$cats = get_categories( $args );
foreach( $cats as $cat ) :
echo $cat->name;
echo $cat->description;
endforeach;