Definieren Sie den Titel und den Slug eines Beitrags aus benutzerdefinierten Feldern

Diese Frage bezieht sich auf eine andere Frage zu WPSE: Setzen Sie den Posttitel aus zwei Meta-Feldern

Ich bin auf der Suche nach einer Möglichkeit, den Titel und den Slug eines benutzerdefinierten WP-Post-Typs aus einem benutzerdefinierten Feld (dh Vorname und Nachname) zu definieren. Wenn ich beispielsweise “John” in das Feld “fname” und “Doe” in das Feld “lname” eingab, wäre der Titel “John Doe” und der Slug “John-Doe”.

Die Lösung, die auf dem oben verlinkten Thread angeboten wird, funktioniert, aber es erfordert, dass ich zuerst den Entwurf speichere, bevor ich auf “Veröffentlichen” klicke. Wenn ich sofort auf “Veröffentlichen” klicke, ist der Post-Titel nichts als ein Bindestrich / Bindestrich “-” und der Slug ist die Post-ID.

Wer weiß, wie es funktioniert, ohne zuerst den Entwurf speichern zu müssen?

— Update — Hier ist der Code, den ich verwende. Es basiert auf dem oben verlinkten Thread.

function my_set_empname_title( $data , $postarr ) { if($data['post_type'] == 'employees') { $emp_fname = get_post_meta($postarr['ID'], 'emp_first_name', true); $emp_lname = get_post_meta($postarr['ID'], 'emp_last_name', true); $new_title = "$emp_fname" . '-' . "$emp_lname"; $post_slug = sanitize_title_with_dashes($new_title, '', $context = 'save'); $post_slugsan = sanitize_title($post_slug); $data['post_title'] = $new_title; $data['post_name'] = $post_slugsan; } return $data; } add_filter( 'wp_insert_post_data' , 'my_set_empname_title' , '99', 2 ); 

Solutions Collecting From Web of "Definieren Sie den Titel und den Slug eines Beitrags aus benutzerdefinierten Feldern"