1. Никогда не выполняйте SQL-запросы (через функции типа get_term_my()) в цикле. Перед началом цикла получите все термины с помощью
get_terms(), а дальше уже циклом по результатам идете и обращаетесь к term_id.
2. Ну и да,
Пычев Анатолий правильно написал - echo у вас там, а значит в if() проверки не будет, потому что проверка ожидает возврат результата true|false. А у вас void.
3. К тому же, in_category() ожидает массив ID, который вы и так уже получаете с помощью get_term_children(), зачем получать термины целиком - непонятно.
// 1. get_term_children() вернет массив ID терминов.
$children_ids = get_term_children( 1, 'category' );
// 2. in_category() как раз такой массив терминов и ожидает.
if ( in_category( $children_ids ) ) {
//
}
Остальной код вам не нужен, по крайней мере не для этих целей.