Von Metaboxen zu wp_editor () migrieren

Ich hatte eine Client-Anforderung, bei der die in WordPress verfügbaren Editiermöglichkeiten für Inhalte verfügbar sein sollten, die in der Seitenleiste eines bestimmten Posts / einer bestimmten Seite angezeigt werden sollten.

Der anzuzeigende Inhalt wurde ursprünglich unter Verwendung von Metaboxen implementiert, die einen einzelnen Textbereich enthielten, in dem der Inhalt als Roh-HTML eingegeben wurde und keine Einfüge- / Upload-Möglichkeiten hatte.

Ich habe mich entschieden, dieses Design zu migrieren, um wp_editor() da es alle nativen Bearbeitungsfunktionen von WordPress bietet (ohne eine Metabox zu verwenden, da dies nicht empfohlen wird). Aber ich bin mir nicht sicher, wie ich die eingegebenen Daten abrufen und sie an das Back-End-System senden und dann an die folgende Aktion binden soll, um die Daten zu speichern:

add_action( 'save_post', 'save_sidebar_content' );

Ich benutzte auch die folgenden Hilfsfunktionen:

 get_post_meta(); add_post_meta(); update_post_meta(); delete_post_meta(); 

Ich würde gerne wissen, ob es solche functionen gibt, um die CRUD-Operationen in Verbindung mit diesen Daten zu erleichtern, wenn wp_editor () verwendet wird.

Danke im Voraus. Nav

Solutions Collecting From Web of "Von Metaboxen zu wp_editor () migrieren"

Es funktioniert genau wie ein normales Textfeld mit Ausnahme der Daten, die html_entity_decode werden. Wenn Sie also die gespeicherten Daten aufrufen, stellen Sie sicher, dass Sie die HTML-Entitäten mit html_entity_decode dekodieren. Hier ist eine sehr einfache Demo-class, casting Sie einen Blick auf das Feld geschaffen.

 if (!class_exists('wp_editor_meta_box')){ class wp_editor_meta_box{ public function __construct(){ /* Define the custom box */ add_action( 'add_meta_boxes', array($this,'wp_editor__add_custom_box' )); /* Do something with the data entered */ add_action( 'save_post', array($this,'wp_editor__save_postdata' )); } /* Adds a box to the main column on the Post and Page edit screens */ function wp_editor__add_custom_box() { add_meta_box( 'wp_editor_box', __( 'WP Editor Box' ), array($this,'wp_editor_meta_box'), 'post' ); } /* Prints the box content */ function wp_editor_meta_box( $post ) { // Use nonce for verification wp_nonce_field( plugin_basename( __FILE__ ), 'wp_editor_nonce' ); $field_value = get_post_meta( $post->ID, '_wp_editor_', false ); wp_editor( html_entity_decode($field_value), '_wp_editor_' ); } /* When the post is saved, saves our custom data */ function wp_editor__save_postdata( $post_id ) { // verify if this is an auto save routine. // If it is our form has not been submitted, so we dont want to do anything if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // verify this came from the our screen and with proper authorization, // because save_post can be triggered at other times if ( ( isset ( $_POST['wp_editor_nonce'] ) ) && ( ! wp_verify_nonce( $_POST['wp_editor_nonce'], plugin_basename( __FILE__ ) ) ) ) return; // Check permissions if ( ( isset ( $_POST['post_type'] ) ) && ( 'page' == $_POST['post_type'] ) ) { if ( ! current_user_can( 'edit_page', $post_id ) ) { return; } } else { if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } } // OK, we're authenticated: we need to find and save the data if ( isset ( $_POST['_wp_editor_'] ) ) { update_post_meta( $post_id, '_wp_editor_', $_POST['_wp_editor_'] ); } } }//end class }//end if new wp_editor_meta_box();