все верно, Вы в функции get_cats выполняете команду echo тем самым сразу выводите id-шки на экран. Функция заканчивается и ничего не возвращает. Ваш блок if не отрабатывает.
рекомендую пользоваться отладчиком, или хотя бы, выводом переменных или флагов в файл или на экран. Тогда будете понимать как движется выполнение кода.
Вот здесь есть хуки карточки товара. Выбираете нужный и добавляете html код Вашей кнопки.
Можете подсмотреть как это делает сам woocommerce пробежавшись по обработчикам этих хуков в самом плагине
Это, в корне, не верное решение.
Расположение ресурсов на диске никак не должно быть связано с отображением на фронте.
Пускай они заливаются как хотят, а вот инструмент который работает с ними (ну например: галерея) должен выставлять и сохранять порядок отображения установленный пользователем.
Смотрите настройки инструмента, либо меняйте инструмент.