Correct this line in your code at the end of function.
echo get_the_post_thumbnail($page->ID, 'thumbnail');
should be
echo get_the_post_thumbnail($post_id, 'thumbnail');
also as per WordPress documentation, category_name
parameter should be a string representing category slug
, not name
.
So, the complete code should look like this:
$arg = array(
'orderby' => 'date',
'number' => 10,
);
$categories = get_categories($arg);
echo '<ul>';
foreach ($categories as $cat) {
echo '<li>';
echo '<figure>
<a href="https://wordpress.stackexchange.com/questions/332566/?catId=".$cat->term_id.'">'; // not cat_ID
//Add featured image from the last post??
get_last_post_image($cat->slug);
echo '</a>
</figure>
</li>';
}
echo '</ul>';
And the function:
function get_last_post_image($cat_slug){
$args = array(
'category_name' => $cat_slug, // it should be slug of category, not name.
'posts_per_page' => 1,
'order_by' => 'date',
'order' => 'desc'
);
$post = get_posts( $args );
if($post) {
$post_id = $post[0]->ID;
if(has_post_thumbnail($post_id)){
echo get_the_post_thumbnail($post_id, 'thumbnail');
}
}
}