✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como preencher dinamicamente configurações avançadas de campos personalizados

31

Com algum código PHP, é muito fácil preencher dinamicamente um valor ou opções de campos personalizados avançados (ACF). Você pode fazer isso para qualquer tipo de entrada, incluindo as opções de rádio, caixas de seleção e similares. Neste post veremos como.

O filtro

Campos personalizados avançados oferece um filtro chamado [acf/load_field](https://www.advancedcustomfields.com/resources/acf-load_field/). Você pode usar esse filtro de várias maneiras diferentes. Filtre acf/load_fieldpara aplicá-lo a todos os tipos de campos ou inclua código dentro de sua função de gancho para descobrir qual tipo de campo ou nome você deseja. Ou você pode especificar o tipo de campo (acf/load_field/type=<type>), nome (acf/load_field/name=<name>) ou chave (acf/load_field/key=<key>).

Suponha que criamos um campo de texto assim:

Como preencher dinamicamente configurações avançadas de campos personalizados

Poderíamos direcionar isso por acf/load_field/name=dyn_pop_example(segmenta apenas este campo específico), acf/load_field/type=text(aplica-se a todos os campos do tipo texto) ou acf/load_field(aplica-se a todos os campos de qualquer tipo ou nome). Ao usar os dois últimos filtros, você pode, é claro, entrar no destino da função por informações de campo específicas, como nome. Cada campo no ACF também recebe uma chave exclusiva, mas eles estão ocultos e são principalmente para uso interno do ACF.

O filtro fornece uma variável; a matriz de campo. Esta matriz fornece todas as informações sobre o campo atual. O que você faz é simplesmente alterar as informações no array e retornar o array de campo modificado. Dependendo do tipo de campo, os elementos na matriz diferem. Por exemplo, tipos de campo de escolha múltipla, como select e radioboxes, terão um elemento de matriz ‘ choices‘ que campos do tipo texto, por exemplo, não terão. Eu recomendo que você faça um var_dump()dos arrays fornecidos para ver a que tipo de informação você tem acesso.

Vamos começar a olhar para algum código real!

População: exemplos simples

Definir o valor padrão de uma entrada de texto seria algo assim:

add_filter('acf/load_field/name=dyn_pop_example', function($field) {
    $field['default_value'] = __('This is default value', 'txtdomain');
    return $field;
});

Nós direcionamos nossa entrada de texto com o nome dyn_pop_examplee definimos seu valor padrão (chave ‘ default_value‘) para uma string de nossa própria escolha. O campo será então renderizado assim:

Como preencher dinamicamente configurações avançadas de campos personalizados

Você pode modificar qualquer configuração para o campo. No exemplo abaixo definimos o placeholder e as instruções do texto:

add_filter('acf/load_field/name=dyn_pop_example', function($field) {
    $field['placeholder'] = __('Type in here', 'txtdomain');
    $field['instructions'] = __('Some instructions coming from code', 'txtdomain');
    return $field;
});

O que fará o campo renderizar assim:

Como preencher dinamicamente configurações avançadas de campos personalizados

Preencher opções

Se você deseja preencher dinamicamente as opções de um campo de seleção, rádio ou caixa de seleção, faça isso no elemento-chave da matriz ‘ choices‘. Este choiceselemento ‘ ‘ aplica-se a todos os campos do tipo select, radio e checkbox.

O choiceselemento ‘ ‘ precisa ser uma matriz de pares chave + valor. As chaves são os valores (que serão salvos) e os valores são o rótulo que aparece como a escolha.

Suponha que alteramos nosso campo para um select. Você pode deixar as opções em branco, pois elas serão definidas através do nosso código.

Como preencher dinamicamente configurações avançadas de campos personalizados

Para preencher as escolhas do select fazemos assim:

add_filter('acf/load_field/name=dyn_pop_example', function($field) {
    $choices = [
        'red' => __('Red Color', 'txtdomain'),
        'blue' => __('Blue Color', 'txtdomain'),
        'green' => __('Green Color', 'txtdomain')
    ];
    $field['choices'] = $choices;
    $field['default_value'] = 'blue';
    return $field;
});

Na linha #2 - #6nós simplesmente definimos um array de escolhas. Modifique isso de acordo com suas necessidades. Na linha #7atribuímos as escolhas do campo ao nosso array. Para uma boa medida, também definimos o valor padrão do campo. Isso não é necessário – sem linha #8o select simplesmente escolheria automaticamente a primeira escolha no array (‘red’).

O código acima renderizará o campo assim:

Como preencher dinamicamente configurações avançadas de campos personalizados

As escolhas são com você, tudo o que você precisa cuidar é fornecer uma matriz de chave + valor adequada para o choiceselemento ‘ ‘ do campo. Como exemplo básico, este exemplo de código mostra como você pode transformar um campo de seleção normal em uma escolha de postagens.

add_filter('acf/load_field/name=dyn_pop_example', function($field) {
    $posts = new WP_Query([
        'post_type' => 'page',
        'posts_per_page' => -1
    ]);
    $choices = [];
    while ($posts->have_posts()) { 
        $posts->the_post();
        $choices[get_the_ID()] = get_the_title();
    }
    wp_reset_query();
    $field['choices'] = $choices;
    return $field;
});

O exemplo de código acima faz uma consulta de postagem buscando todas as páginas e preenche a matriz de opções com IDs de postagem como chaves e os títulos de postagem como valores. Este é apenas um exemplo; se você for fazer uma escolha de postagens, o ACF oferece outros tipos de campo especificamente para isso.

Fonte de gravação: awhitepixel.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação