Certo, Diana.
Realmente, não há necessidade de repetir a funcação loop. Muito obrigado pela atenção. Porém, fiquei na dúvida de como fazer para por o <?php endwhile; else: ?> ser diferente em cada um dos casos. Por exemplo: Se for archive -> mostrar conteúdo do loop para archive. Se nada for encontrado, mostrar “Nenhum arquivo encontrado”. Se for categoria -> mostrar conteúdo do loop para categoria. Se nada for encontrado, mostrar “Nenhuma categoria encontrada”.
Acho muito grande. Tem muitas funções desnecessárias.