Aggiungere un editor WordPress a un plugin personalizzato e salvare i dati
Sto creando un plugin personalizzato. Uno dei campi del plugin permette all'utente di aggiungere dati.
Se aggiungo un textarea
l'utente non ha controllo sul testo. Vorrei quindi aggiungere un editor.
So che WordPress offre la funzione wp_editor();
.
Dopo alcune ricerche su Google ho scoperto che è molto semplice implementare l'editor:
$content = '';
$editor_id = 'mycustomeditor';
wp_editor( $content, $editor_id );
Questo mostra un bell'editor. Il problema è che il contenuto non viene salvato.
L'editor fa parte di un form, quindi ho pensato di aggiungere la funzione di salvataggio alla funzione di salvataggio del form in questo modo:
if( isset( $_POST[ 'mycustomeditor' ] ) ) {update_post_meta( $post_id, 'mycustomeditor', array_map('sanitize_text_field', $_POST[ 'mycustomeditor' ]) );}
Tuttavia WordPress la pensa diversamente. Crea effettivamente il meta_key
nel database ma senza alcun valore.
Spero che qualcuno possa capire dove sto sbagliando!

Risolto!
Spero che qualcun altro possa usarlo o che risolva il loro problema. Se c'è un modo migliore per favore condividilo e spiega perché.
$editor_id = 'custom_editor_box';
$uploaded_csv = get_post_meta( $post->ID, 'custom_editor_box', true);
wp_editor( $uploaded_csv, $editor_id );
Per salvare i dati:
function save_wp_editor_fields(){
global $post;
update_post_meta($post->ID, 'custom_editor_box', $_POST['custom_editor_box']);
}
add_action( 'save_post', 'save_wp_editor_fields' );
E questo è tutto ciò che serve!

Ecco come l'ho implementato in uno dei miei plugin:
<?php
wp_nonce_field('nonce_action', 'nonce_field');
$content = get_option('my_content');
wp_editor( $content, 'settings_wpeditor' );
?>
function settings_save_wpeditor(){
// verifica il nonce, aggiorna l'opzione ecc...
if(isset($_POST['settings_wpeditor']) && isset($_POST['nonce_field']) && wp_verify_nonce($_POST['nonce_field'], 'nonce_action') ){
update_option('my_content', wp_kses_post($_POST['settings_wpeditor']));
}
}
add_action('admin_init', 'settings_save_wpeditor', 10);
Assicurati di aggiungere dei prefissi alle tue variabili e ai nomi delle opzioni e consulta wp_nonce_field e wp_verify_nonce dal codex di WordPress.
https://codex.wordpress.org/Function_Reference/wp_nonce_field https://codex.wordpress.org/Function_Reference/wp_verify_nonce

$editor_id = 'product_summary';
$summary = get_post_meta( $post->ID,'product_summary', true );
wp_editor( $summary, $editor_id );
if( isset( $_REQUEST['product_summary'] ) ){
update_post_meta( $post_id, 'product_summary',wp_kses_post( $_POST['product_summary'] ) );
}
Il valore si aggiorna nell'wp_editor
ma non aggiorna il valore nel database, per favore controlla e risolvi il problema?

Ciao, questa è la soluzione al tuo problema. Copia e incolla e vedrai...
function dhansikhi_hukamnama_post_page(){
?>
<div class='wrap'>
<h2>La Mia Pagina Super Admin</h2>
<form method='post'>
<?php
wp_nonce_field('nates_nonce_action', 'nates_nonce_field');
$content = get_option('special_content');
wp_editor( $content, 'special_content' );
submit_button('Salva', 'primary');
?>
</form>
</div><!-- .wrap -->
<?php
}
add_action( 'admin_menu', 'dhansikhi_hukamnama_page' );
