Obtener valor en campo personalizado con taxonomía

3 nov 2013, 21:16:49
Vistas: 18.6K
Votos: 5

Tengo un campo personalizado my_cf para Taxonomía/Término. ¿Cómo puedo obtener y mostrar el valor del campo personalizado para una taxonomía/término?

He intentado usar:

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

donde basic - es el nombre de mi taxonomía. Pero esto no funciona.

¿Alguna sugerencia?

7
Comentarios

get_field no es una función nativa de WordPress, parece que tu pregunta carece de información.

Milo Milo
3 nov 2013 21:29:13

get_field, esta función de Advanced Custom Fields, yo uso el plugin ACF

John Genry John Genry
3 nov 2013 21:46:50

¿has leído la documentación de get_field?

Milo Milo
3 nov 2013 21:58:34

también Cómo obtener valores de un término de taxonomía

Milo Milo
3 nov 2013 21:59:20

ok, prueba: '<?php $variable = get_field('my_cf', 'basic'); echo $variable; ?>' y nada, donde - my_cf - campo personalizado, basic - taxonomía en tipo de entrada - y my_cf = 250 valor, pero no hay salidaб ¿puede haber una salida específica del valor del campo personalizado en la taxonomía?

John Genry John Genry
3 nov 2013 22:11:40

Por favor usa [edit]s en lugar de comentarios para mostrar tu progreso.

kaiser kaiser
3 nov 2013 22:57:12

¿Encontraste una forma de hacer esto? Los ejemplos tampoco me funcionan. No estoy seguro si tienes que especificar la taxonomía personalizada en algún lugar. Lo intenté mediante DI y nombre del slug.

v3nt v3nt
17 nov 2014 18:36:51
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 3
0

No puedo explicarlo mejor que la página de documentación de ACF que publiqué en los comentarios:

Todas las funciones de la API pueden usarse con un término de taxonomía, sin embargo, se requiere un segundo parámetro para apuntar al ID del término. Esto es similar a pasar un post_id para apuntar a un objeto de publicación específico.

El $post_id necesario es una cadena que contiene el nombre de la taxonomía + el ID del término en este formato: $TaxonomyName_$TermID

Entonces, si tu campo personalizado es my_cf, y el nombre de tu taxonomía es basic (no el nombre del término) y el ID del término dentro de tu taxonomía es 42, entonces necesitas:

$variable = get_field( 'my_cf', 'basic_42' );
4 nov 2013 02:01:02
2

¿Tus datos de campo están almacenados en wp_options? Si es así...

$term_id = 12345;
$term_meta = get_option( 'taxonomy_' . $term_id );
$my_cf = $term_meta[ 'my_cf' ];
echo $my_cf;
4 nov 2013 00:55:55
Comentarios

ok, mi url: edit-tags.php?taxonomy=basic&post_type=products ¿cómo puedo obtener el id de la taxonomía? en el campo personalizado basic - my_cf, '$variable = get_field( 'my_cf', 'basic_42' ); - no funciona

John Genry John Genry
4 nov 2013 12:45:25

Cuando respondí esta pregunta no noté que estabas usando un plugin para crear los términos personalizados. Seguir como funciona ACF puede ser tu mejor opción. Si por alguna razón eso no funciona, puedes obtener el id del término con get_term_by(). Documentación: http://codex.wordpress.org/Function_Reference/get_term_by

Joey Yax Joey Yax
4 nov 2013 20:08:46
0

Yo uso CMB2 para configurar campos personalizados, y la lógica no es muy diferente de ACF en muchos casos. Para mi caso de uso específico, he creado una función muy simple pero flexible para realizar algunas comprobaciones en la taxonomía antes de mostrar el valor del campo personalizado.

Considerando que se ha creado un campo personalizado llamado my_cf para, digamos, una taxonomía llamada basic como en tu ejemplo, la siguiente función podría ayudar a responder tu pregunta y tal vez extender un poco el uso de tus campos personalizados.

function get_taxonomy_terms_custom_fields( $taxonomy = '' ) {

    global $post;

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

    // Verificar si tenemos una taxonomía y que sea válida. Si no, retornar false
    if ( !$taxonomy )
        return false;

    // Sanitizar la entrada de la taxonomía
    $taxonomy = filter_var( $taxonomy, FILTER_SANITIZE_STRING );

    // seguir jugando seguro
    if ( !taxonomy_exists( $taxonomy ) )
        return false;

    foreach ( $terms as $term ) {
    // Establecer una variable para el term_id de la taxonomía
    $tax_term_id = $term->term_id;

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

    // Asegurarnos de que no tenemos un objeto WP_Error, no es realmente necesario, pero mejor prevenir
    if ( is_wp_error( $term ) )
        continue;

        // escapar el valor retornado // esc_html(), esc_url(), esc_attr()

        return esc_html($my_field);

    }
}

Simplemente usa <?php get_taxonomy_terms_custom_fields ('basic'); ?> reemplazando basic con el nombre de tu propia taxonomía.

La función get_taxonomy_terms_custom_fields () verificará la taxonomía especificada y recorrerá todas las categorías asignadas a un post, post_type y luego retornará el valor del campo personalizado si está presente, evitando errores si no lo está. También podría extenderse para verificar un campo que produce un array() como un campo repetible.

Espero que te ayude - ¡Buena suerte!

16 may 2016 18:40:39