Ottenere il valore in un campo personalizzato con tassonomia

3 nov 2013, 21:16:49
Visualizzazioni: 18.6K
Voti: 5

Ho un campo personalizzato my_cf per una Tassonomia/Termine. Come posso ottenere e visualizzare il valore del campo personalizzato per una tassonomia/termine?

Ho provato a usare:

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

dove basic - è il nome della mia tassonomia. Ma questo non funziona.

Qualche suggerimento?

7
Commenti

get_field non è una funzione core di WordPress, la tua domanda sembra mancare di alcune informazioni.

Milo Milo
3 nov 2013 21:29:13

get_field, questa funzione di Advanced Custom Fields, io uso il plugin ACF

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

hai letto la documentazione per get_field?

Milo Milo
3 nov 2013 21:58:34

vedi anche Come ottenere valori da un termine di tassonomia

Milo Milo
3 nov 2013 21:59:20

ok, prova: '<?php $variable = get_field('my_cf', 'basic'); echo $variable; ?>' ma non ottengo nulla, dove - my_cf - campo personalizzato, basic - tassonomia nel tipo di articolo - e my_cf = 250 come valore, ma non c'è output, potrebbe esserci un output specifico per il valore del campo personalizzato nella tassonomia?

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

Per favore usa [modifica] invece di commenti per mostrare i tuoi progressi.

kaiser kaiser
3 nov 2013 22:57:12

Hai trovato un modo per farlo? Anche per me gli esempi non funzionano. Non sono sicuro se bisogna specificare la tassonomia personalizzata da qualche parte. Ho provato tramite DI e nome dello slug.

v3nt v3nt
17 nov 2014 18:36:51
Mostra i restanti 2 commenti
Tutte le risposte alla domanda 3
0

Non posso spiegarlo meglio della pagina della documentazione ACF che ho postato nei commenti:

Tutte le funzioni API possono essere utilizzate con un termine di tassonomia, tuttavia è richiesto un secondo parametro per puntare all'ID del termine. Questo è simile a passare un post_id per puntare a un oggetto post specifico.

Il $post_id richiesto è una stringa contenente il nome della tassonomia + l'ID del termine in questo formato: $TaxonomyName_$TermID

Quindi, se il tuo campo personalizzato è my_cf, il nome della tua tassonomia è basic (non il nome del termine) e l'ID del termine all'interno della tua tassonomia è 42, allora avrai bisogno di:

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

I tuoi dati dei campi sono memorizzati in wp_options? Se è così...

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

ok, il mio url: edit-tags.php?taxonomy=basic&post_type=products come posso ottenere l'id della tassonomia? nel campo personalizzato basic - my_cf, '$variable = get_field( 'my_cf', 'basic_42' ); - non funziona

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

Quando ho risposto a questa domanda non avevo notato che stavi usando un plugin per creare i termini personalizzati. Continuare con il funzionamento di ACF potrebbe essere la soluzione migliore. Se per qualche motivo non funziona, puoi ottenere l'id del termine con get_term_by(). Documentazione: http://codex.wordpress.org/Function_Reference/get_term_by

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

Utilizzo CMB2 per configurare campi personalizzati, e la logica non è molto diversa da ACF in molti casi. Per il mio caso d'uso specifico ho creato una funzione molto semplice ma flessibile per effettuare alcuni controlli sulla tassonomia prima di visualizzare il valore del campo personalizzato.

Considerando che sia stato creato un campo personalizzato chiamato my_cf per una tassonomia chiamata basic come nel tuo esempio, la seguente funzione potrebbe aiutare a rispondere alla tua domanda e magari estendere un po' l'utilizzo dei tuoi campi personalizzati.

function get_taxonomy_terms_custom_fields( $taxonomy = '' ) {

    global $post;

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

    // Verifica se abbiamo una tassonomia e che sia valida. Se no, restituisce false
    if ( !$taxonomy )
        return false;

    // Sanificazione dell'input della tassonomia
    $taxonomy = filter_var( $taxonomy, FILTER_SANITIZE_STRING );

    // continua a giocare sul sicuro
    if ( !taxonomy_exists( $taxonomy ) )
        return false;

    foreach ( $terms as $term ) {
    // Imposta una variabile per il term_id della tassonomia
    $tax_term_id = $term->term_id;

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

    // Assicurati di non avere un oggetto WP_Error, non strettamente necessario, ma meglio prevenire
    if ( is_wp_error( $term ) )
        continue;

        // escape del valore restituito // esc_html(), esc_url(), esc_attr()

        return esc_html($my_field);

    }
}

Basta usare <?php get_taxonomy_terms_custom_fields ('basic'); ?> sostituendo basic con il nome della tua tassonomia.

La funzione get_taxonomy_terms_custom_fields () verificherà la tassonomia specificata e scorrerà tutte le categorie assegnate a un post, post_type per poi restituire il valore del campo personalizzato se presente, evitando errori se non presente. Potrebbe anche essere estesa per verificare un campo che produce un array() come un campo ripetibile.

Spero sia utile - Buona fortuna!

16 mag 2016 18:40:39