WP_Query in save_post enthält den Artikel, der die Aktion ausgetriggers hat, nicht?

Ich verwende die function ” acf_form von Advanced Custom Field, um ein Front-End-Formular für Benutzer acf_form , um Inhalte auf der Website zu veröffentlichen. Benutzer senden Fotos von aufgefangenen Rotbarschen, und einer der Datenpunkte ist spot_count (integer).

Wenn ein neuer Post veröffentlicht wird, möchte ich den Usermeta des Autors folgendermaßen aktualisieren:

  1. insgesamt Spots
  2. die meisten Flecken, einzelner Fisch

Um diese Informationen zu erhalten, benutze ich wp_query, um über ihre Einsendungen zu iterieren und eine laufende Summe zu behalten, plus die höchste Punktzahl zu finden. Dieser Teil funktioniert auf einer normalen Seite einwandfrei.

Aber aus irgendeinem Grund, wenn ich die save_post Aktion in WordPress einchecke, enthält das Ausführen von WP_Query keine Daten aus dem Post, der die Aktion ausgetriggers hat. Dies führt zu falschen Zählwerten für die gesamten Spots und die meisten Spots.

Gibt es einen anderen Haken, den ich dafür benutzen soll? Oder wird das einfach nicht funktionieren, weil die Daten noch nicht existieren, damit WP_Query es finden kann?

Hier ist mein aktueller Code:

 /** * Update Angler Profile whenever they post a catch (or we manually edit one) */ function update_angler_profile( $post_id, $post, $update ) { // Query the author's redfish madness posts $t1stats_args = array( 'post_type' => 't1', 'posts_per_page' => -1, 'author' => $post->post_author ); // Initialize variables $total_spots = 0; $most_spots = 0; // Loop through posts $t1stats_query = new WP_Query($t1stats_args); if($t1stats_query->have_posts()): while($t1stats_query->have_posts()):$t1stats_query->the_post(); // Add current spot_count to overall counter $total_spots += get_field('spot_count'); // If this post's spot_count is higher than the previous, set it as the new winner if (get_field('spot_count') > $most_spots){ $most_spots = get_field('spot_count'); } endwhile; endif; wp_reset_postdata(); // Save total spots and most spots to the user's metadata update_user_meta($post->post_author, '_t1_most_spots', $most_spots); update_user_meta($post->post_author, '_t1_total_spots', $total_spots); } // Hook into save_post for our t1 custom post type add_action( 'save_post_t1', 'update_angler_profile', 20, 3 ); 

Solutions Collecting From Web of "WP_Query in save_post enthält den Artikel, der die Aktion ausgetriggers hat, nicht?"