You can do this by getting the child categories of that category first, then passing them as an array to your query.
$categories=get_categories(
array( 'parent' => $cat->cat_ID )
);
$cat_list = [];
foreach ($categories as $c) {
$cat_list[] = $c->term_id;
}
ref: Get the children of the parent category
This won’t/might not work, but it’s usually worth trying passing an array where you could pass an integer in WordPress:
$args = array( 'numberposts' => '5','post_status' => 'publish','category' => $cat_list,'category__not_in' => '680', 'orderby' => 'post_date', 'order' => 'DESC' );
wp_get_recent_posts
uses get_posts
& get_post
accepts an ID of a category, at the time of writing it doesn’t mention an array… So you might need to use WP_Query
:
$query = new WP_Query( array( 'category__and' => $cat_list ) );