Дело в том, что данная функция не делает запросов, а сверяет данные с глобальной переменной $wp_taxonomies, которая в functions.php не определена. Эта функция заработала бы в файле шаблона.
Чтобы получить в functions.php все зарегистрированные
к текущему моменту (по поводу этого выделения будет комментарий ниже) таксономии воспользуйтесь функцией get_taxonomies()
$taxonomies = get_taxonomies('products', 'objects');
в такой переменной будут данные и ваш код дальше заработает.
Обращу еще внимание на подводные камни вашей задачи.
В этой переменной изначально будут содержаться только базовые таксономии WP: category, post_tag, nav_menu, link_category, post_format
Если вы создавали свою таксономию через register_taxonomy, то она попадет в этот массив, ЕСЛИ код register_taxonomy находится в functions.php ВЫШЕ данного кода или если функция регистрации таксономии подключена к хуку инициализации 'init' (!), что правильнее всего. А если вы регистрировали таксономию через плагин, например, через популярный Custom post ui и т.п. то и вовсе не попадет сюда, т.к. регистрация таксономий в плагине происходит раньше срабатывания functions.php