function zum Publizieren ausführen UND speichern (nicht nur speichern)

Ich verwende diese function, um einen Beitragstitel basierend auf ein paar benutzerdefinierten Feldern automatisch festzulegen:

function set_event_title( $data , $postarr ) { if($data['post_type'] == 'event') { $getdate = get_post_meta($postarr['ID'],'event_datestart',true); $dateformat = new DateTime($getdate); $date = $dateformat->format( 'mdY' ); $event_venue = get_post_meta($postarr['ID'],'venue_name',true); $event_title = $event_venue . ' - ' . $date; $post_slug = sanitize_title_with_dashes ($event_title,'','save'); $post_slugsan = sanitize_title($post_slug); $data['post_title'] = $event_title; $data['post_name'] = $post_slugsan; } return $data; } add_filter( 'wp_insert_post_data' , 'set_event_title' , '99', 2 ); 

Aber ich kann es nur auf Post-Update und nicht auf der ersten Veröffentlichung des Posts arbeiten. Gibt es eine Möglichkeit, dies sowohl zum ERSTEN Mal als auch zu den anderen Zeiten, in denen der Beitrag gespeichert wird, zu erledigen?

Solutions Collecting From Web of "function zum Publizieren ausführen UND speichern (nicht nur speichern)"

Anstatt Meta-Werte von der get_post_meta-function zu nehmen, nehmen Sie sie aus $ postarr array, da beim initialen Veröffentlichen des Posts keine Werte für event_datestart und venue_name in der database vorhanden sind und eine leere Zeichenfolge zurückgegeben wird.

Aktualisierter Code:

 function set_event_title( $data , $postarr ) { if($data['post_type'] == 'event') { $getdate = $postarr['event_datestart']; // Replace event_datestart with the input field name of event_datestart post meta. $dateformat = new DateTime($getdate); $date = $dateformat->format( 'mdY' ); $event_venue = $postarr['venue_name']; // Replace venue_name with the input field name of venue_name post meta. $event_title = $event_venue . ' - ' . $date; $post_slug = sanitize_title_with_dashes ($event_title,'','save'); $post_slugsan = sanitize_title($post_slug); $data['post_title'] = $event_title; $data['post_name'] = $post_slugsan; } return $data; } add_filter( 'wp_insert_post_data' , 'set_event_title' , '99', 2 ); 

Weitere Informationen finden Sie auf dieser Seite .