La funzione di WordPress get_post_meta() serve a reperire il valore di un custom field (campo personalizzato) associato ad un post o pagina. Come testimonia il suo nome, i campi personalizzati non sono altro che metadati associati ai post di WordPress. Vediamone l'uso.
La sintassi di base è la seguente:
$meta_value = get_post_meta($post_id, $key, $single);
$post_id
è l'ID del post a cui è associato il custom field. All'interno del Loop possiamo utilizzare la funzione
get_the_ID()
per ottenere l'ID corrispondente, mentre al di fuori del Loop possiamo servirci di $post->ID
.
$key
è il nome del custom field, una stringa che non deve contenere né spazi e che non dovrebbe mai usare una combinazione di
lettere maiuscole e minuscole. Gli underscore ed i trattini sono invece ammessi. Restituisce una stringa vuota se il custom field non ha un
valore.
$single
è un valore booleano che indica se il valore restituito dalla funzione debba essere una stringa (true) o un array (false).
Nella stragrande maggioranza dei casi useremo una stringa.
Ecco un esempio pratico:
while(have_posts()) {
the_post();
$id = get_the_ID();
$video = get_post_meta( $id, 'video', true );
if($video != '') {
// Il post ha l'URL di un video
}
}
Possiamo anche creare un Loop personalizzato di tutti i post aventi un determinato custom field:
$args = array( 'meta_key' => 'evident', 'meta_value' => 'yes', 'posts_per_page' => - 1 );
$loop = new WP_Query( $args );
while($loop->have_posts()) {
$loop->the_post();
}
Se avessimo usato get_post_meta()
avremmo invece dovuto verificare che ciascun post avesse il custom field evident
con il valore yes
.