Speichere benutzerdefinierten Wert im Hauptinhalt von Post

Ich erstelle eine benutzerdefinierte Meta-Eingabe, um einen Seitengenerator zu erstellen. So kann ich Element ziehen und ziehen, um Inhalte für Post zu erstellen.

Und wenn ich Post speichere, will ich es direkt speichern, um Inhalt zu posten.

Also ich denke, ich werde die $ _POST ändern und hook es auf save_post Aktion.

$_POST['content'] = $_POST['page-builder-content'];

Ich habe es versucht, aber es funktioniert nicht. Irgendwelche Ratschläge? Code:

 function stPageBuilder() { $screens = array('post', 'page'); foreach ($screens as $screen) { add_meta_box( 'st-post-class', // Unique ID esc_html__( 'Page Builder', page-builder' ), // Title 'stPageBuilderCallBack', // Callback function $screen, // Admin page (or post type) 'advanced', // Context 'default' // Priority ); } } function stPageBuilderCallBack($post, $box) { wp_nonce_field( basename( __FILE__ ), 'st-page-builder-nonce' ); // here is html layout for drag & drop feature } function stPageBuilderSave($postID) { if ('page' == $POST['post_type']) { if (!current_user_can('edit_page', $postID)) return; } else { if (!current_user_can('edit_post', $postID)) return; } if (!isset($_POST['st-page-builder-nonce']) || !wp_verify_nonce($_POST['st-page-builder-nonce'], basename(__FILE__))) return; $_POST['content'] = $_POST['st-page-builder-content']; } function staddPageBuilder() { add_action( 'add_meta_boxes', 'stPageBuilder' ); add_action( 'save_post', 'stPageBuilderSave' ); } staddPageBuilder(); 

Solutions Collecting From Web of "Speichere benutzerdefinierten Wert im Hauptinhalt von Post"

Die Antwort scheint klar zu sein, wenn Sie den Quellcode betrachten. Die Aktion, an die Sie wp_insert_post , wird innerhalb von wp_insert_post und unmittelbar vor der Rückgabe der $post_ID Variable $post_ID . Dies bedeutet, dass die gesamte Manipulation und Dateneinfügung bereits stattgefunden hat, so dass das Ändern des $_POST Arrays nichts $_POST . Sie müssen nach Dingen suchen, die Sie vor der databaseänderung tun müssen, damit Ihre Änderungen wirksam werden. Zum Glück hat WordPress viele Optionen zur Auswahl.

Kurz gesagt, hier ist, was ich tun würde:

 // Hook to a different action / filter function staddPageBuilder() { // ... add_filter( 'wp_insert_post_data', 'stPageBuilderSave', 10, 2); } // Notice the new filter passes different arguments, so we need to adapt the function function stPageBuilderSave($data, $postarr) { // Since we don't have the $postID variable, let's try to grab it from the array passed by the insert function // Note that passing the object ID to the current_user_can function is very unusual and you can do without it $postID = isset($postarr['ID']) ? $postarr['ID'] : 0; if ('page' == $POST['post_type']) { if (!current_user_can('edit_page', $postID)) return; } else { if (!current_user_can('edit_post', $postID)) return; } if (!isset($_POST['st-page-builder-nonce']) || !wp_verify_nonce($_POST['st-page-builder-nonce'], basename(__FILE__))) return; // This bit changes, because the action is different and so are the function's arguments $data['post_content'] = $_POST['st-page-builder-content']; return $data; } 

Lass es uns wissen wie es geht!

Haben Sie versucht, die function wp_insert_post von WordPress zu verwenden, um Post in den Post-Inhalt einzufügen ?

Beispiel:

 // Create post object $my_post = array( 'post_title' => 'My post', 'post_content' => 'This is my post.', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array(8,39) ); // Insert the post into the database wp_insert_post( $my_post );