Cum să obții valoarea unui câmp personalizat în taxonomie
Am un câmp personalizat my_cf
pentru Taxonomy/Term. Cum pot obține și afișa valoarea câmpului personalizat pentru taxonomie/termen?
Am încercat să folosesc:
$variable = get_field('my_cf', 'basic');
echo $variable;
unde basic - numele taxonomiei mele. Dar nu funcționează.
Ce sugestii aveți?
Nu pot să explic mai bine decât pagina de documentație ACF pe care am postat-o în comentarii:
Toate funcțiile API pot fi utilizate cu un termen de taxonomie, totuși, este necesar un al doilea parametru pentru a ținti ID-ul termenului. Acest lucru este similar cu transmiterea unui post_id pentru a ținti un anumit obiect post.
$post_id necesar este un șir care conține numele taxonomiei + ID-ul termenului în acest format: $TaxonomyName_$TermID
Deci, dacă câmpul tău personalizat este my_cf
, iar numele taxonomiei este basic
(nu numele termenului) și ID-ul termenului în taxonomia ta este 42, atunci ai nevoie de:
$variable = get_field( 'my_cf', 'basic_42' );

ok, url-ul meu: edit-tags.php?taxonomy=basic&post_type=products cum pot obține id-ul taxonomiei? în câmpul personalizat basic - my_cf, '$variable = get_field( 'my_cf', 'basic_42' ); - nu funcționează

Când am răspuns la această întrebare nu am observat că folosești un plugin pentru a crea termenii personalizați. Probabil cel mai bine ar fi să rămâi la modul în care funcționează ACF. Dacă din orice motiv nu funcționează, poți obține id-ul termenului cu get_term_by(). Documentație: http://codex.wordpress.org/Function_Reference/get_term_by

Eu folosesc CMB2 pentru a seta câmpuri personalizate, iar logica nu este foarte diferită de ACF în multe cazuri. Pentru cazul meu specific, am creat o funcție foarte simplă dar flexibilă pentru a face câteva verificări pentru taxonomia înainte de a afișa valoarea câmpului personalizat.
Considerând că ai creat un câmp personalizat numit my_cf
pentru, să zicem, o taxonomie numită basic conform exemplului tău, următoarea funcție ar putea să te ajute să răspunzi la întrebarea ta și poate chiar să extinzi utilizarea câmpurilor tale personalizate.
function get_taxonomy_terms_custom_fields( $taxonomy = '' ) {
global $post;
$terms = get_the_terms( $post->ID, $taxonomy );
// Verifică dacă avem o taxonomie și dacă este validă. Dacă nu, returnează false
if ( !$taxonomy )
return false;
// Sanitize inputul pentru taxonomie
$taxonomy = filter_var( $taxonomy, FILTER_SANITIZE_STRING );
// continuăm să fim precauți
if ( !taxonomy_exists( $taxonomy ) )
return false;
foreach ( $terms as $term ) {
// Setează o variabilă pentru term_id-ul taxonomiei
$tax_term_id = $term->term_id;
$my_field = get_term_meta( $tax_term_id, 'my_cf', true );
// Asigură-te că nu avem un obiect WP_Error, nu este strict necesar, dar mai bine să fim siguri
if ( is_wp_error( $term ) )
continue;
// escapăm valoarea returnată // esc_html(), esc_url(), esc_attr()
return esc_html($my_field);
}
}
Pur și simplu folosește <?php get_taxonomy_terms_custom_fields ('basic'); ?>
înlocuind basic
cu numele taxonomiei tale.
Funcția get_taxonomy_terms_custom_fields ()
va verifica taxonomia specificată și va parcurge toate categoriile asignate unui post, post_type și apoi va returna valoarea câmpului personalizat dacă este prezentă, evitând erorile dacă nu este. Poate fi extinsă și pentru a verifica un câmp care produce un array() cum ar fi un câmp repetabil.
Sper să te ajute - Mult succes!
