A Hierarquia de templates é, sem dúvida, um dos assuntos mais importantes do WordPress. Não há como desenvolver um tema para o WordPress sem conhecer suas templates e qual hierarquia elas seguem.
Em mais esse artigo focado na hierarquia de templates do WordPress vamos tentar esclarecer a atuação da index.php e o que muda de acordo com as configurações de leitura selecionadas.
A atuação da index.php
Você sabe porque o arquivo index.php é o único arquivo “PHP” requerido em um tema WordPress?
É porque na verdade o arquivo index.php funciona como um curinga dentro da hierarquia de templates do WordPress. Acredita-se muito que ele é o arquivo para exibir o conteúdo da página inicial, mas na verdade, qualquer página dentro do WordPress pode ter seu conteúdo exibido pelo arquivo index.php.
Se dermos uma outra olhada na imagem completa da hierarquia de arquivos podemos ver bem claramente que em todos os casos testados na hierarquia se as templates mais específicas ou mesmo as mais genéricas não existirem, quem vai exibir o conteúdo é a index.php. Ou seja, essa template pode assumir a exibição de qualquer tipo de conteúdo dentro do WordPress.
Templates para a página inicial
Já que a index.php não necessariamente é o arquivo utilizado para exibir a página inicial vamos examinar com mais detalhes a hierarquia de templates para descobrir então quais arquivos podemos utilizar para esse fim.
A quantidade de arquivos possíveis para exibir o conteúdo da página inicial de um site em WordPress é maior do que imaginamos no ínicio. Dependendo das configurações de leitura do WordPress podemos ter a template home.php ou front-page.php. E ainda dependendo da situação, a template page.php/singular.php, ou uma de suas variações (page-$id.php, page-$slug.php, $custom.php), poderá ser utilizada como a página inicial do site.
Configurações de leitura do WordPress
A página de configurações de leitura do WordPress (Menu Configurações >> Leitura) define opções que podem alterar a query padrão de cada página requisitada. Podemos definir nessa página a quantidade de posts serão recuperados do banco para montar uma query de listagem, a quantidade de posts do feed, se ele irá usar o texto completo do post ou o resumo e até a visibilidade pelos mecanismos de busca.
Mas para o artigo vamos focar nas configurações da página inicial.
A página inicial mostra seus posts recentes
Essa é a configuração padrão para a opção, também por isso é a mais comum. Nesse caso o comportamento do WordPress ao acessarmos a URL da página inicial do site, é montar a query com uma listagem dos últimos posts cadastrados na administração.
O mais comum nesse caso é que o desenvolvedor utilize a index.php para exibir essa listagem de posts, porém com essa configuração também podemos utilizar o arquivo front-page.php ou o home.php, deixando assim a index.php livre para ser um arquivo de fallback, que é o seu propósito inicial.
Primeiro o WordPress irá procurar pelo arquivo front-page.php, não existindo esse arquivo será procurado o home.php, caso essa template também não tenha sido criada é que chegamos à index.php.
A página inicial mostra uma página estática
Caso o projeto tenha uma página inicial que não exiba listagem de últimos posts mas sim vários destaques e outros tipos de conteúdo essa opção pode ser utilizada. Para isso vamos ter que criar uma página na administração do WordPress e selecionar essa página na opção Página Inicial.
A partir desse momento a template home.php não será mais considerada para a exibição da página inicial do site. Em seu lugar entra a possibilidade de utilização da page.php/singular.php ou uma de suas variações. Claro, existindo a template front-page.php ela terá prioridade sobre qualquer outra e será utilizada para a exibição desse conteúdo.
Nessa opção também podemos configurar uma página para exibir a listagem de últimos posts do site. A página deve ser criada na administração antes e selecionada na opção Página de posts.
A partir desse momento essa página não utilizará mais as templates page.php ou singular.php nem nenhuma de suas variações, e passará a considerar a template home.php para exibir a listagem de posts. Não existindo o arquivo home.php no tema será considerada a index.php.
Para fixar o aprendizado desse post aconselho todos a criarem um tema fictício e “brincar” com as possibilidades de configurações do WordPress e de templates. Assim entenderão na prática a lógica do WordPress para a hierarquia de templates. Essa dica é válida também para todas as postagens que já tivemos acerca da hierarquia de templates do WordPress, como a de Páginas Singulares e de Listagem de Posts.