Obtenha valor no campo personalizado com taxonomia [closed]

4

Eu tenho o campo personalizado my_cf para Taxonomia / Termo. Como posso obter e gerar valor com campo personalizado para taxonomia / termo?

Eu tentei usar:

$variable = get_field('my_cf', 'basic'); 
  echo $variable; 

onde basic - nome da minha taxonomia. Mas isso não funciona.

Alguma sugestão?

    
por John Genry 03.11.2013 / 20:16

3 respostas

3

Eu realmente não posso explicar melhor do que o Página de documentação do ACF que publiquei nos comentários :

  

Todas as funções da API podem ser usadas com um termo de taxonomia, no entanto, um segundo parâmetro é necessário para segmentar o ID de termo. Isso é semelhante a passar por um post_id para segmentar um objeto de postagem específico.

     

O $ post_id necessário é uma string contendo o nome da taxonomia + o ID do termo neste formato: $ TaxonomyName_ $ TermID

Portanto, se seu campo personalizado for my_cf e seu nome de taxonomia for basic ( não nome do termo) e o termo ID em sua taxonomia for 42, será necessário:

$variable = get_field( 'my_cf', 'basic_42' );
    
por Milo 04.11.2013 / 01:01
1

Seus dados de campo estão armazenados em wp_options? Se sim ...

$term_id = 12345;
$term_meta = get_option( 'taxonomy_' . $term_id );
$my_cf = $term_meta[ 'my_cf' ];
echo $my_cf;
    
por Joey Yax 03.11.2013 / 23:55
1

Eu uso o CMB2 para configurar campos personalizados, e a lógica não é tão diferente do ACF em muitos casos. Para meu caso de uso específico, criei uma função muito simples, mas flexível, para fazer algumas verificações da taxonomia antes de exibir o valor do campo personalizado .

Considerando que um criou um campo personalizado chamado my_cf para, digamos, uma taxonomia denominada básico como no seu exemplo, a seguinte função pode ajudar a responder sua pergunta e talvez Estender um pouco o uso do seu campo personalizado.

function get_taxonomy_terms_custom_fields( $taxonomy = '' ) {

    global $post;

    $terms = get_the_terms( $post->ID, $taxonomy );

    // Check if we have a taxonomy and that it is valid. If not, return false
    if ( !$taxonomy )
        return false;

    // Sanitize the taxonomy input
    $taxonomy = filter_var( $taxonomy, FILTER_SANITIZE_STRING );

    // keep playing safe
    if ( !taxonomy_exists( $taxonomy ) )
        return false;

    foreach ( $terms as $term ) {
    // Set a variable for taxonomy term_id
    $tax_term_id = $term->term_id;

    $my_field = get_term_meta( $tax_term_id, 'my_cf', true ); 

    // Make sure we do not have a WP_Error object, not really necessary, but better be safe
    if ( is_wp_error( $term ) )
        continue;

        // escaping the returned value // esc_html(), esc_url(), esc_attr()

        return esc_html($my_field);

    }
}

Basta usar <?php get_taxonomy_terms_custom_fields ('basic'); ?> substituindo basic por seu próprio nome de taxonomia.

A função get_taxonomy_terms_custom_fields () verificará a taxonomia especificada e o tipo de loop em todas as categorias atribuídas a um post, post_type e retornará o valor do campo personalizado, se presente, evitando erros, se não. Também pode ser estendido para verificar um campo que produz um array (), como um campo repetível.

Espero que ajude - boa sorte!

    
por Adriano Monecchi 16.05.2016 / 17:40