🎉 USE O CUPOM FIM.DE.SEMANA.FULL | 20% OFF acima de R$ 100,00

Como corrigir o Select Field que não funciona no ACF PRO

Time Full Services Time Full Services
Tipo Page Builders
Nome do erro Select Field do ACF PRO não funciona EN: ACF PRO Select field not working
Severidade Informativo
Descrição O ACF Select Field não funciona quando as choices estão no formato errado, quando o Return Format devolve um tipo diferente do que o template espera, ou quando a opção Stylized UI (Select2) deixa de carregar por conflito de scripts no editor.

O que é Select Field do ACF PRO que não funciona?

O ACF Select Field é um campo de seleção do Advanced Custom Fields que mostra uma lista de opções (choices) para o editor escolher uma ou várias. Cada opção é definida em Choices, uma por linha, e aceita o formato valor : Rótulo para separar o que fica gravado no banco do texto exibido. O que o campo entrega ao template é controlado pelo Return Format, que pode ser Value, Label ou Both (Array), segundo a documentação oficial do ACF.

Quando se diz que o Select Field não funciona, geralmente um destes comportamentos aparece: o campo abre vazio porque as choices não foram preenchidas, o valor selecionado não casa com o esperado porque o Return Format está em Label em vez de Value, a seleção múltipla retorna um array onde o tema esperava texto, ou a interface de busca Stylized UI (que ativa a biblioteca Select2) não carrega por conflito de JavaScript. São problemas de configuração e de leitura no template, não de bug do plugin.

Como identificar

  • O Select Field abre vazio no editor, sem nenhuma opção na lista, mesmo com o grupo de campos ativo.
  • O valor escolhido não é salvo ou volta ao padrão ao reabrir o post para edição.
  • No frontend a chamada the_field(‘cor’) imprime ‘Array’ ou nada, em vez do texto da opção selecionada.
  • Com ‘Select Multiple Values?’ ligado, get_field retorna um array e o tema quebra ao tratar como string.
  • A caixa de busca da opção ‘Stylized UI’ não aparece e o campo vira um select HTML simples, sem o Select2.
  • Ao usar ‘Allow Null’, a opção ‘- Select -‘ não some e o campo aceita ficar sem valor onde deveria ser obrigatório.
Antes de começar: Antes de editar o functions.php ou desativar plugins e trocar o tema em produção, faça um backup completo do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, para reverter caso o editor ou o frontend quebrem.

Como prevenir

  • Sempre defina as Choices no formato valor : Rótulo, uma por linha, para que o valor gravado fique estável mesmo que o texto exibido mude depois.
  • Padronize o Return Format como Value nos campos usados em comparações de código, evitando que o template dependa do texto traduzível do rótulo.
  • Documente quais Select Fields usam seleção múltipla, para que o time saiba que esses campos retornam array e trate sempre com implode ou laço.
  • Ao popular choices por código, centralize a lógica em um único filtro acf/load_field versionado no tema ou plugin, em vez de editar as opções manualmente no painel.

Causa

  • As Choices foram digitadas no formato errado: em vez de uma opção por linha (ou valor : Rótulo), tudo ficou em uma linha só ou com separador inválido, então o ACF não monta a lista e o campo abre vazio.
  • O Return Format está em 'Label' enquanto o template compara o resultado de get_field com o valor (slug), fazendo a condição falhar mesmo com a opção certa selecionada.
  • A opção 'Select Multiple Values?' está ligada: o ACF passa a devolver um array de valores, e o template que usa the_field ou concatena como string imprime 'Array' ou quebra.
  • A opção 'Stylized UI' depende da biblioteca Select2 carregada pelo ACF; um conflito de JavaScript com outro plugin ou tema interrompe esse script e a busca não inicializa, deixando o select sem a interface estilizada.
  • O campo é populado dinamicamente por código, mas o filtro acf/load_field/name= não está atribuindo o array $field['choices'] no formato valor => rótulo, então nenhuma opção chega ao editor.
  • A regra de localização do grupo de campos ou o status Active desligado fazem o Select Field nem aparecer no post sendo editado, dando a impressão de que o campo não funciona.

Como resolver

  1. Confira o formato das Choices: Abra o grupo de campos e edite o Select Field. No campo Choices, garanta uma opção por linha. Para separar o valor gravado do texto exibido, use o formato valor : Rótulo, como manda a documentação do ACF. Sem isso o campo abre vazio.
    Painel WP -> ACF -> Grupos de Campos -> abra o grupo e edite o Select Field
  2. No campo Choices, escreva uma opção por linha:
    azul : Azul
    verde : Verde
  3. Ajuste o Return Format ao que o template lê: Ainda nas configurações do campo, defina o Return Format conforme o template. Use Value quando o código compara com o slug gravado, Label quando precisa só do texto exibido, ou Both (Array) quando precisa dos dois. Mismatch aqui faz a condição no tema falhar.
    Painel WP -> ACF -> Grupos de Campos -> Select Field -> Return Format
    Escolha: Value (slug) | Label (texto) | Both (Array)
  4. Trate a seleção múltipla como array no template: Se 'Select Multiple Values?' estiver ligado, o ACF retorna um array. No template, percorra o array ou una os itens com implode em vez de imprimir direto com the_field, que mostraria a palavra Array.
    Painel WP -> Select Field -> ligue ou desligue 'Select Multiple Values?' conforme a necessidade
  5. No template, troque the_field('cor') por:
    echo implode( ', ', (array) get_field('cor') );
  6. Isole o conflito que derruba o Stylized UI (Select2): Se a busca da opção Stylized UI não carrega, é conflito de JavaScript. Desative os outros plugins um a um e troque para um tema padrão, recarregando o editor a cada teste, até a interface Select2 voltar. Depois reative o culpado e trate o conflito.
    Painel WP -> Plugins -> desative os demais plugins um a um
    Painel WP -> Aparência -> Temas -> ative um tema padrão (ex.: Twenty Twenty-Four)
    Abra o console do navegador (F12 -> Console) e recarregue o editor a cada teste
  7. Popule choices dinâmicas pelo filtro correto: Quando as opções vêm de código (por exemplo, de uma taxonomia ou tabela), use o filtro acf/load_field do ACF, monte o array $field['choices'] no formato valor => rótulo e retorne o $field. O código de exemplo desta página mostra a estrutura completa.
    Edite o functions.php do tema filho ou um plugin de site
    Adicione um add_filter em acf/load_field/name= com o nome do seu campo
    Preencha $field['choices'][ $valor ] = $rotulo e retorne $field
PHP
<?php
// Popula as opcoes de um Select Field do ACF dinamicamente.
// Troque 'cor' pelo nome (name) do seu Select Field.
add_filter( 'acf/load_field/name=cor', 'full_load_acf_select_choices' );
function full_load_acf_select_choices( $field ) {
    // Zera as choices antes de montar a lista.
    $field['choices'] = array();

    // Exemplo: monta as opcoes a partir de uma taxonomia.
    $termos = get_terms( array(
        'taxonomy'   => 'category',
        'hide_empty' => false,
    ) );

    if ( ! is_wp_error( $termos ) ) {
        foreach ( $termos as $termo ) {
            // Formato exigido pelo ACF: valor => rotulo.
            $field['choices'][ $termo->slug ] = $termo->name;
        }
    }

    return $field;
}

Perguntas frequentes

Por que meu Select Field do ACF PRO abre vazio
Na maioria dos casos as Choices não foram preenchidas no formato certo. O ACF espera uma opção por linha e aceita valor : Rótulo para separar o valor gravado do texto exibido. Reabra o campo, escreva uma opção por linha e salve para a lista voltar a aparecer.
Qual a diferença entre Value, Label e Both no Return Format do Select
Value devolve o valor gravado (o slug), Label devolve só o texto exibido e Both (Array) devolve os dois num array. Escolha Value quando o código compara com o slug e Label quando precisa apenas do texto, segundo a documentação do ACF.
Por que o Select Field imprime Array no frontend
Isso acontece quando a opção 'Select Multiple Values?' está ligada e o campo retorna um array. Em vez de the_field, percorra o array ou use implode, por exemplo echo implode(', ', (array) get_field('cor')), para exibir os valores como texto.
Como faço o Select Field salvar o valor escolhido
Confirme que o grupo de campos está com o status Active e que a regra de localização casa com o post editado. Se o valor não persiste, verifique também conflitos de JavaScript no editor que impedem o campo de inicializar antes de salvar.
O que é a opção Stylized UI do Select Field
A opção Stylized UI ativa a biblioteca Select2, que adiciona busca, carregamento via AJAX e reordenação ao campo. Se ela não carrega, costuma ser conflito de JavaScript com outro plugin ou tema que interrompe o script do Select2 no editor.
Como populo as opções do Select Field por código
Use o filtro acf/load_field do ACF, no formato acf/load_field/name= seguido do nome do campo. Dentro da função, monte o array $field['choices'] no formato valor => rótulo e retorne o $field, conforme o exemplo da documentação oficial.
Para que serve a opção Allow Null no Select Field
Allow Null adiciona uma escolha vazia '- Select -' à lista, permitindo deixar o campo sem valor. Se o campo precisa ser obrigatório, desligue Allow Null e ative a validação Required para impedir que fique em branco.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes