web-dev-qa-db-fra.com

Obtenir de la valeur dans un champ personnalisé avec taxonomie

J'ai un champ personnalisé my_cf pour Taxonomy/Term. Comment puis-je obtenir et afficher une valeur avec un champ personnalisé pour taxonomie/terme?

J'ai essayé d'utiliser:

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

où basic - nom de ma taxonomie. Mais ça ne marche pas.

Aucune suggestion?

5
John Genry

Je ne peux pas vraiment mieux l'expliquer que la page de documentation d'ACF que j'ai postée dans les commentaires :

Toutes les fonctions de l'API peuvent être utilisées avec un terme taxinomique, cependant, un deuxième paramètre est requis pour cibler l'ID du terme. Ceci est similaire à passer par un post_id pour cibler un objet post spécifique.

Le $ post_id requis est une chaîne contenant le nom de taxonomie + le terme ID au format suivant: $ TaxonomyName_ $ TermID

Donc, si votre champ personnalisé est my_cf et que votre nom de taxonomie est basic (not nom du terme) et que le terme ID dans votre taxonomie est 42, vous avez besoin:

$variable = get_field( 'my_cf', 'basic_42' );
3
Milo

Les données de votre champ sont-elles stockées dans wp_options? Si c'est le cas...

$term_id = 12345;
$term_meta = get_option( 'taxonomy_' . $term_id );
$my_cf = $term_meta[ 'my_cf' ];
echo $my_cf;
1
Joey Yax

J'utilise CMB2 pour configurer des champs personnalisés, et la logique n'est pas si différente d'ACF dans de nombreux cas. Pour mon cas d'utilisation spécifique, j'ai créé une fonction très simple mais flexible afin d'effectuer quelques vérifications pour la taxonomie avant d'afficher le custom field value.

Considérant que l'on a créé un champ personnalisé nommé my_cf pour disons un taxonomie named basic selon votre exemple, la fonction suivante pourrait aider à répondre à votre question et éventuellement étendre un peu l'utilisation de votre champ personnalisé .

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);

    }
}

Utilisez simplement <?php get_taxonomy_terms_custom_fields ('basic'); ?> en remplaçant basic par votre propre nom de taxonomie.

La fonction get_taxonomy_terms_custom_fields () vérifie la taxonomie spécifiée et le type de boucle dans toutes les catégories attribuées à une publication, post_type, puis renvoie la valeur du champ personnalisé, le cas échéant, en évitant les erreurs. Il pourrait également être étendu pour rechercher un champ produisant un tableau () tel qu'un champ répétable.

J'espère que ça aide - Bonne chance!

1
Adriano Monecchi