Acho que você encontrou um problema de lógica interessante em image_get_intermediate_size()
. Essa função percorre as imagens disponíveis e tenta encontrar a melhor correspondência possível para as dimensões personalizadas fornecidas por você.
Primeiro, tenta encontrar a imagem conforme o comentário no código:
// already cropped to width or height; so use this size
Veja o problema? Não imagem, dimensões perfeitamente correspondentes, mas imagem que corresponda em largura ou altura, sendo a dimensão restante menor ou igual ao tamanho necessário para se ajustar às dimensões.
Portanto, a sua imagem de 300 × 200 tem a mesma altura e cabe dentro da dimensão de 540 × 200 que você deseja (e provavelmente vem mais cedo em metadados) para que o WP aproveite isso com prazer.
Curiosamente, a classe é exibida com o correto ...
Não há mistério aí, a classe é simplesmente gerada a partir de sua entrada, sem considerar se os valores fazem sentido e / ou estão disponíveis.