Cum să obții valoarea unui câmp personalizat în taxonomie

3 nov. 2013, 21:16:49
Vizualizări: 18.6K
Voturi: 5

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?

7
Comentarii

get_field nu este o funcție din nucleul WordPress, întrebarea ta pare să lipsească anumite informații.

Milo Milo
3 nov. 2013 21:29:13

get_field, această funcție din Advanced Custom Fields, eu folosesc plugin-ul ACF

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

ai citit documentația pentru get_field?

Milo Milo
3 nov. 2013 21:58:34

de asemenea Cum să obții valori dintr-un termen de taxonomie

Milo Milo
3 nov. 2013 21:59:20

ok, încearcă: '<?php $variable = get_field('my_cf', 'basic'); echo $variable; ?>' și nimic, unde - my_cf - câmp personalizat, basic - taxonomie în tipul de postare - și my_cf = 250 valoare, dar nu apare nimic, poate există o metodă specifică pentru afișarea valorii câmpului personalizat în taxonomie?

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

Te rog folosește [edit] în loc de comentarii pentru a-ți arăta progresul.

kaiser kaiser
3 nov. 2013 22:57:12

Ai găsit o metodă de a face asta? Nici exemplele nu funcționează pentru mine. Nu sunt sigur dacă trebuie să specifici taxonomia personalizată undeva. Am încercat prin DI și prin numele slug-ului.

v3nt v3nt
17 nov. 2014 18:36:51
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 3
0

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' );
4 nov. 2013 02:01:02
2

Datele dvs. de câmp sunt stocate în wp_options? Dacă da...

$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
Comentarii

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ă

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

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

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

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!

16 mai 2016 18:40:39