update_post_meta e update_field funzionano solo quando si salva il post
Uso Advanced Custom Fields (ACF) per memorizzare i dati in un campo personalizzato. Avevo le informazioni di latitudine e longitudine memorizzate separatamente, ma ho bisogno che siano in un unico campo personalizzato, quindi ho creato la funzione qui sotto. $query
esegue semplicemente una query su tutti i post pertinenti.
<?php
$query = query_custom_posts(); if($query->have_posts()):
while ($query->have_posts()): $query->the_post();
if(get_field('map_lat') && get_field('map_lng')):
$lat = get_field('map_lat');
$long = get_field('map_lng');
$coord = $lat.','.$long;
$post_id = get_the_ID();
update_post_meta($post_id, 'map_coor', $coord);
endif; endwhile; wp_reset_query(); endif;
?>
Ora la funzione sopra funziona. Il campo map_coor viene popolato con lat e long separati da una virgola (posso vedere le informazioni nel campo).
La cosa strana è che se uso get_field('map_coor')
nel front-end non appare nulla. Se salvo il post corrispondente, allora le informazioni VENGONO mostrate.
Nella funzione sopra ho anche provato a utilizzare la funzione update_field
(da ACF) in questo modo: update_field($post_id, 'map_coor', $coord)
ma il problema persiste.
Quindi la mia domanda è: devo modificare la funzione sopra o semplicemente eseguire una funzione che salva tutti i post? Se è quest'ultimo il caso, come posso farlo? Ho trovato l'hook save_posts
ma non sono sicuro di come farlo funzionare per tutti i post.

Il problema è che la funzione update_field di ACF funziona in modo leggermente diverso da update_post_meta. Riesci a vederlo?
update_post_meta( $post_id, $meta_key, $meta_value, $prev_value );
update_field( $field_key, $value, $post_id );
Se usi update_post_meta dovresti, secondo me, usare get_post_meta per ottenere i meta. Se usi update_field dovresti usare the_field o get_field perché ACF memorizza le coppie chiave/valore in modo leggermente diverso.

Se utilizzi update_field devi usare the_field o get_field perché ACF memorizza le coppie chiave/valore in modo leggermente diverso questa affermazione non è del tutto accurata. È vero che ACF memorizza i valori in modo diverso, ma puoi usare update_field
e recuperare i contenuti con get_post_meta
senza problemi, purché usi update_field
correttamente. La cosa importante da notare è che $field_key
non è la stessa cosa di $meta_key
!

Ho modificato la frase in "dovrebbe secondo me usare". Quello che hai detto è assolutamente corretto, ma questa questione del "nome-campo/riferimento-campo" è molto spesso il problema.

Grazie. Come ho descritto nella mia domanda, ho provato update_field
. L'ho usato in combinazione con get_field
. Il risultato è lo stesso; il valore del campo viene salvato, ma quando interrogo il campo personalizzato sul front-end risulta vuoto. Proverò con update_post_meta
e sostituirò get_field
con get_post_meta
.

Funziona quando uso update_post_meta
e get_post_meta
. Trovo comunque strano che update_field
e get_field
non diano gli stessi risultati. Segnerò la risposta come accettata, grazie ancora.
