Campo Repetidor do ACF Pro

Da última vez falamos do Campo de Galeria da versão Pro do plugin Advanced Custom Fields. Desta vez, seguindo nossa série, falarei sobre o Campo Repetidor, muito útil para criar listas de metadados.

O campo do tipo repetidor é muito útil para criar uma série de campos de metadados em uma estrutura que se repete. Seguindo nosso exemplo anterior para posts sobre filmes, teríamos um campo sobre atores com o nome do ator e nome do personagem:

  • Bing Crosby: Dexter Haven
  • Grace Kelly: Tracy Lord
  • Frank Sinatra: Macaulay Connor

Com essa estrutura em mãos, podemos criar um Campo Repetidor e dentro dele dois campos de texto:

Campo repetidor do ACF

Podemos ter qualquer tipo de campo como um subcampo, imagens, campos de Wysiwyg, etc. Com o campo criado, podemos preencher os atores de High Society:

Exemplo de preenchimento do campo repetidor do ACF em um post

Os subcampos podem ser mostrados em tabela ou em bloco. Porém, caso sejam muitos subcampos, o ideal é que estejam em blocos para melhor visualização. É possível criar novos linhas no fim, no começo ou entre duas linhas, clicando-se no +:

Interface para criação de uma nova linha para preenchimento.

Também é possível reordenar as linhas clicando e arrastando nos números de ordem na primeira coluna à direita.

O ACF dispõe de um loop similar ao do WordPress para usar os campos repetidores em seu tema. Ao invés de have_posts() e the_post(), nós temos o have_rows() e the_row:

PHP

Como podemos ver, assim como temos get_field para retornar um valor e the_field para imprimir um valor, nós também temos get_sub_field e the_sub_field funcionando da mesma maneira.

Os campos repetidores podem ser inclusive aninhados, colocando-se um campo repetidor dentro de outro campo repetidor. Porém, posts ou options com muitos valores dentro de campos repetidores costumam trazer problemas de performance, pois fazem muitas consultas ao banco de dados.

Falaremos sobre duas maneiras de diminuir a performance de campos repetidores no futuro, portanto fique ligado.

Até a próxima se não for antes.