Verificare se esiste un campo personalizzato specifico?

4 lug 2011, 01:37:04
Visualizzazioni: 18.7K
Voti: 2

È possibile verificare se esiste un campo personalizzato per un determinato post all'interno del loop? Ad esempio, sto utilizzando funzioni come get_post_meta($post->ID, 'Company', true); precedute da un tag <h4>, ma vorrei controllare che esista un valore per il campo personalizzato "Company" prima di scrivere il tag <h4>. È possibile fare questo?

1
Commenti

Amo come le cose chieste 11 anni fa possano essere ancora così rilevanti.

Lisa Lisa
14 lug 2022 02:03:02
Tutte le risposte alla domanda 1
8

I metodi get_ di WordPress servono per recuperare i dati, non per visualizzarli. Puoi facilmente verificare la variabile - che contiene i dati - prima di aggiungere i tuoi tag head:

$my_post_meta = get_post_meta($post->ID, 'Company', true);
if ( ! empty ( $my_post_meta ) )
    echo '<h4>'.$my_post_meta.'</h4>';
4 lug 2011 05:07:43
Commenti

No, controlla solo se il valore è vuoto.

T.Todua T.Todua
26 feb 2017 00:55:27

@T.Todua L'OP ha chiesto (nell'anno 2011): "[…] Vorrei verificare che ci sia un valore per il campo personalizzato […]", quindi verificare se c'è un valore va bene. Inoltre, get_post_meta() è un semplice wrapper per get_metadata(), che restituisce o una stringa vuota '' o un array() vuoto se il valore non è presente. Puoi chiarire la tua affermazione o hai bisogno di aiuto?

kaiser kaiser
26 feb 2017 01:18:01

Volevo solo fare una nota al lettore, niente di più...

ma il titolo della domanda parla da sé (non ho letto tutto l'argomento, solo il titolo), che chiedeva un problema specifico, e la risposta non è una soluzione al 100% per il problema che avevo (esattamente come nella domanda). Tuttavia, forse era soddisfacente per l'OP.

T.Todua T.Todua
26 feb 2017 19:42:22

@T.Todua Allora devi chiarire cosa intendi con "esiste". Come puoi leggere nella risposta così come nel link che ti ho fornito nel commento sopra, get_metadata() è sufficiente per verificare se il valore esiste nel DB.

kaiser kaiser
26 feb 2017 20:09:49

sì, get_metadata è una cosa diversa. ... p.s. non ho mai votato negativamente la tua risposta, era solo la mia osservazione che ti ha spinto a fare un commento migliore! grazie

T.Todua T.Todua
26 feb 2017 20:26:47

@T.Todua Non ci sono voti negativi sulla risposta :) Comunque, get_metadata() in realtà è la stessa cosa di get_post_meta(). Quest'ultimo è solo un "wrapper" semplificato e internamente chiama get_metadata(). A proposito, ti dispiacerebbe se modificassi il tuo commento rimuovendo il flusso infinito di punti esclamativi e il markup in grassetto?

kaiser kaiser
26 feb 2017 21:10:33

no, rimuovilo, come preferisci... non ho guardato get_metadata(). Non so se mi capisci, quello che intendo... se esiste una chiave, ma il suo valore è vuoto, allora la tua funzione tradurrebbe questo come "meta non esiste"... tuttavia, volevo una semplice funzione che mi dicesse semplicemente se quel meta esiste.

T.Todua T.Todua
26 feb 2017 23:08:10

Beh, se vuoi il valore grezzo, allora puoi usare $id_list = [ /* i tuoi ID */ ]; $wpdb->get_results( "SELECT $column, meta_key, meta_value FROM $table WHERE ".sanitize_key('post_id')." IN ($id_list) ORDER BY meta_id ASC", ARRAY_A );. Altrimenti, il core di WordPress restituirà sempre un array vuoto o una stringa vuota, a seconda se hai chiesto un singolo valore o tutti i valori tramite l'argomento della funzione.

kaiser kaiser
26 feb 2017 23:16:41
Mostra i restanti 3 commenti