Exibe todos os valores de um campo personalizado criado com o ACF em uma página

9

Estou usando Campos personalizados avançados / ACF para criar campos personalizados. Uma delas é uma lista de caixas de seleção que exibem algumas opções (opção1, opção2, opção3 ...) .

Agora quero exibir todas as opções desse campo em uma página separada no front-end da seguinte forma:

Opções:
- opção 1
- opção 2
- opção 3
- ...

Como posso recuperar todas as opções com chaves do ACF?

    
por Bob 27.03.2012 / 21:38

2 respostas

14

A função get_field_object do ACF pode ser usada para obter informações e opções para um campo específico.

Primeiro, você precisa da chave de campo do campo específico que deseja imprimir. Ao editar um grupo de campos, clique na guia de opções de tela na parte superior da página. Você deve ver uma opção para alternar a exibição da chave de campo (ela fica oculta por padrão para economizar espaço):

Depoisdeterachave,vocêpodecarregaroobjetodecampoegerarseusvalores:

$field_key="field_5039a99716d1d";
$field = get_field_object($field_key);

if( $field )
{
    echo '<select name="' . $field['key'] . '">';
        foreach( $field['choices'] as $k => $v )
        {
            echo '<option value="' . $k . '">' . $v . '</option>';
        }
    echo '</select>';
}
    
por Milo 14.06.2013 / 01:45
0

Se você estiver tentando enviar algo se uma caixa de seleção estiver marcada, use:

<?php if(in_array('news', get_field('checkbox') )): ?>
    <h1>News was ticked!</h1>
<?php endif; ?>

Se você está tentando apenas exibir uma lista das opções selecionadas, use:

<p>Categories: <?php get_field('checkbox'); ?></p>

Isso fornecerá uma matriz de valores que você pode gerenciar com uma declaração foreach . Usar the_field('checkbox') fornecerá uma string separada por vírgula das opções que você também pode dividir.

Também sugiro que você acesse o site da ACF e leia a documentação. A maioria das perguntas desse tipo serão respondidas com detalhes decentes, e o desenvolvedor também está ativo em seus fóruns de suporte.

EDIT: Se você está querendo a lista de saída de opções disponíveis em uma página para gerar uma consulta dinâmica, eu tenho apenas a coisa. Esta é uma parte que eu acabei de construir ontem para puxar uma lista de meta valores de uma dada tecla de campo personalizado (usando ACF). Eu fiz isso bastante genérico para você. Há outro pedaço do JS para lidar com o pedido do ajax, e um pedaço complicado de php que produz os posts resultantes. Eu não posso realmente reescrevê-los - o JS é padrão WP forward-facing ajax chamada / resposta, eo PHP é uma confusão de verificações condicionais para os 12 campos ACF diferentes que estamos exibindo (2 dos quais são repetidores). O básico é esse código aqui, o botão onClick chama a função ajax em um arquivo JS separado e o php para a própria função ajax essencialmente configura uma matriz de argumentos para a consulta, uma das quais é $selectedOption ou $_POST['option'] como meta_value. Isso é alimentado para um new WP_Query( $args ); , que é então usado em um loop, cuja saída é retornada ao js via add_action('wp_ajax_the_ajax_hook', 'fetch_option_list'); e add_action( 'wp_ajax_nopriv_the_ajax_hook', 'fetch_option_list' ); //for non logged-in users .

 // Get list of meta_values for given meta_key and post_type (page, post, custom post type)
 function meta_list($key = '', $type = '', $status = 'publish'){
 global $wpdb;
    $r = $wpdb->get_col($wpdb->prepare( "
    SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
    LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
    WHERE pm.meta_key = '%s'
    AND p.post_status = '%s'
    AND p.post_type = '%s'
    ORDER BY pm.meta_value ASC", $key, $status, $type));
    return $r;
}

 // ADD EG A FORM TO THE PAGE
 function meta_ajax_frontend(){
    $formlist = meta_list('metakey', 'posttype');
    echo '<form id="optionSelect">';
    echo '<select id="optionList" name="optionList">';
    foreach($formlist as $fl => $val) {
        echo '<option>' . $val . '</option>';
    }
    echo '</select>';
    echo '<input name="action" type="hidden" value="the_ajax_hook" />
    <input id="submit_button" value = "Search" type="button" onClick="fetch_meta();" />
    </form>
    <div id="meta_list">
    Please select an option from the list
    </div>';
 }
    
por SickHippie 27.03.2012 / 23:25