Programmgesteuertes Erstellen einer Seite beim Speichern eines benutzerdefinierten Post-Posts

Ich möchte eine Seite erstellen, wenn ich einen neuen Beitrag auf meinem CPT speichere, und ich möchte, dass sie erst beim ersten Speichern (durch Drücken der Schaltfläche Veröffentlichen) erstellt wird, nicht wenn ich auf Neu hinzufügen klicke (sie speichert dann den ersten Eintrag und setzt ihren Status) als Auto-Draft und erhält die ID für deinen sogenannten Future Post zur Vermeidung von Race Conditions)

Mein Code folgt (alles im classnumfang):

add_action('wp_insert_post', [$this, 'onPostDelete'], 99); function onPostSave($postID) { $rev = wp_is_post_revision( $postID ); if ($rev) { $postID = $rev; } $pT = get_post($postID); // If we are dealing with kookon CPT if ($pT->post_type === 'kookon') { // $postID refers to created post ID // $pT refers to created post object // $kookonPageID refers to page that is created programmatically for corresponding $pT (if $pT is post type `kookon` // This is parent kookon post, which will create page with the same name if ($pT->post_parent == 0) { // If the corresponding page for kookon does not yet exists if (!$this->kookonPageExists($postID)) { // *** HERE LIES THE PROBLEM *** // Removing 3 lines below fixes my problem but creates another if ($pT->post_status == 'auto-draft') { return true; } // This kookon does not exists, create all pages related to it return $this->createKookonPage($pT); } else { $slug = get_post_meta($pT->ID, 'kookon_page_slug', true); $this->updateKookonPage($pT, $this->getKookonPageID($pT->ID), 0,[ 'post_name' => $slug, 'meta_fields' => [ '_wp_page_template' => 'kookon_main', '_kookon_cpt_id' => $pT->ID ] ]); return true; } } } } function createKookonPage($pT, $pageParentID = 0, $opts = []) { $postID = $pT->ID; if ($pageParentID == 0) { $title = "Kookon: $pT->post_title"; } else { $title = $pT->post_title; } $slug = isset($opts['post_name']) ? $opts['post_name'] : ''; $result = wp_insert_post([ 'post_title' => $title, 'post_name' => !empty($slug) ? sanitize_title($slug) : sanitize_title(get_the_title($postID)), 'post_status' => 'publish', 'post_type' => 'page', 'post_parent' => $pageParentID, 'meta_input' => [ '_kookon_cpt_id' => $postID, '_wp_page_template' => isset($opts['template']) ? $opts['template'] : 'default' ] ]); 

Also, was momentan mit diesem Code passiert, ist, wenn ich nach dem Erstellen der Seiten die Seiten erstellt habe und alles in der wp_posts Tabelle korrekt erscheint. Sie erscheinen auch (ich habe WPML installiert) als Published page count, aber nicht in der Liste, wo ich Edit, delete etc. drücken könnte …

Ich benutze auch wp_insert_post hook anstelle von save_post weil save_post aus irgendeinem Grund nicht meine ACF-Felder, die für meine kookon CPT festgelegt sind, zu speichern, wenn ich die Eingaben zu speichern, zeigen aa leer und nichts ändert sich in DB, mit wp_insert_post löscht diesen Fehler aus irgendeinem Grund…

Irgendwelche Ideen?

Solutions Collecting From Web of "Programmgesteuertes Erstellen einer Seite beim Speichern eines benutzerdefinierten Post-Posts"