Verificare se esiste un campo personalizzato specifico?
È 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?

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

@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?

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 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.

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 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?

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.

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.
