it-swarm.com.de

update_post_meta und update_field funktionieren nur beim Speichern des Beitrags

Ich verwende Advanced Custom Fields (ACF), um Daten in einem benutzerdefinierten Feld zu speichern. Ich hatte Längen- und Breitengrade getrennt gespeichert, aber ich muss sie in einem benutzerdefinierten Feld sein, so dass ich die folgende Funktion gemacht habe. $query fragt einfach alle relevanten Beiträge ab.

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

?>

Jetzt funktioniert die obige Funktion. Das Feld map_coor wird mit dem Lat gefüllt und durch ein Komma getrennt (ich kann die Informationen auf dem Feld sehen).

Das Seltsame ist, dass, wenn ich get_field('map_coor') auf dem Frontend verwende, nichts auftaucht. Wenn ich den entsprechenden Beitrag speichere, erscheint die Info.

In der obigen Funktion habe ich auch versucht, die Funktion update_field (von ACF) wie folgt zu verwenden: update_field($post_id, 'map_coor', $coord), aber das Problem ist immer noch da.

Meine Frage ist also: muss ich die obige Funktion ändern oder nur eine Funktion ausführen, die alle Posts speichert? Wenn letzteres der Fall ist; wie mache ich das? Ich habe den Hook save_posts gefunden, bin mir aber nicht sicher, wie ich ihn durch alle Posts laufen lassen soll.

4
eskimo

Das Problem ist, dass die Funktion update_field von ACF ein wenig anders funktioniert als update_post_meta . Können Sie es sehen?

update_post_meta( $post_id, $meta_key, $meta_value, $prev_value );
update_field( $field_key, $value, $post_id );

Wenn Sie update_post_meta verwenden, sollten Sie meiner Meinung nach get_post_meta verwenden, um das Meta zu erhalten. Wenn Sie update_field verwenden, sollten Sie the_field oder get_field verwenden, da ACF die Schlüssel-/Wertepaare auf eine etwas andere Weise speichert.

10
realloc