Показывает последнюю категорию, потому что в цикле foreach вы каждый раз переназначаете одну и ту же переменную, а не объединяете ее (или помещаете в массив).
foreach ( $item_cats as $item_cat ) {
$classes = urldecode( $item_cat->slug ) . ' ';
}
Вы должны перейти к:
$classes = [];
foreach ( $item_cats as $item_cat ) {
$classes[] = urldecode( $item_cat->slug ) . ' ';
}
И
<li class="<?php echo esc_attr(implode(' ', $classes)) ?>">
РЕДАКТИРОВАТЬ: Или просто без какого-либо массива (из-за простой природы того, что должно быть отображено):
foreach ( $item_cats as $item_cat ) {
$classes .= urldecode( $item_cat->slug ) . ' ';
}