Fügen Sie das Meta-Feld hinzu, nachdem der Beitrag veröffentlicht wurde

Ich versuche, ein benutzerdefiniertes Feld von event_month hinzuzufügen, wenn ein Beitrag veröffentlicht oder gespeichert wird. Ich verwende die save_post-Aktion und erhalte den Inhalt eines benutzerdefinierten Felds mit dem Datum und versuche, dieses in einem separaten benutzerdefinierten Feld mit nur dem Monat zu speichern. Dies funktioniert perfekt beim Speichern eines Posts, der bereits erstellt wurde. Ich habe meinen Code unten gezeigt.

add_action('save_post', 'update_event_date'); function update_event_date($post_id){ $post_type = get_post_type($post_id); $event_datee = get_post_meta($post_id, '_EventStartDate', true); if ($post_type == 'tribe_events'){ $month = date("m",strtotime($event_datee)); update_post_meta($post_id, 'event_month', $month); } } 

Das Problem tritt auf, wenn ein neuer Post erstellt wird. Ich denke, das liegt daran, dass die Aktion _EventStartDate wird, bevor das _EventStartDate Meta erstellt wurde und daher der Monat nicht daraus entnommen werden kann.

Der Hook feuert korrekt und wie vorgesehen beim Speichern / Aktualisieren eines Posts, erhält aber den Monat beim Erstellen eines neuen Posts nicht korrekt aus dem Meta.

Ich würde es wirklich schätzen, wenn mir jemand eine Anleitung geben könnte.

Solutions Collecting From Web of "Fügen Sie das Meta-Feld hinzu, nachdem der Beitrag veröffentlicht wurde"

Sie können die Aktion post_updated , wenn Sie nach der Veröffentlichung auf die Daten des Beitrags zugreifen möchten. Dieser Haken übergibt die ID des Posts, das überschwemmte Post-Objekt und das aktualisierte Post-Objekt.

 add_action( 'post_updated', 'update_event_date', 10, 3 ); function update_event_date( $post_id, $post_after, $post_before ){ $post_type = get_post_type( $post_id ); $event_datee = get_post_meta( $post_id, '_EventStartDate', true ); if ( $post_type == 'tribe_events' ) { $month = date( "m",strtotime( $event_datee ) ); update_post_meta( $post_id, 'event_month', $month ); } } 

Verwenden Sie pre_post_update anstelle von save_post

Ausführliche Erklärung hier