Añadir un editor de WordPress a un plugin personalizado y guardar los datos
Estoy creando un plugin personalizado. Uno de los campos del plugin permite al usuario añadir datos.
Si añado un textarea
, el usuario no tiene control sobre el texto. Por eso me gustaría añadir un editor.
Sé que WordPress ofrece la función wp_editor();
.
Después de buscar en Google, descubrí que es muy fácil implementar el editor:
$content = ''; // Contenido inicial vacío
$editor_id = 'mycustomeditor'; // ID único para el editor
wp_editor( $content, $editor_id ); // Mostrar el editor
Esto muestra un buen editor. El problema es que el contenido no se está guardando.
El editor es parte de un formulario, así que pensé en añadir la función de guardado al formulario así:
if( isset( $_POST[ 'mycustomeditor' ] ) ) {update_post_meta( $post_id, 'mycustomeditor', array_map('sanitize_text_field', $_POST[ 'mycustomeditor' ]) );}
Sin embargo, WordPress tiene un enfoque diferente. Crea el meta_key
en la base de datos pero no guarda ningún valor.
¡Espero que alguien pueda ver qué estoy haciendo mal!

¡Resuelto!
Espero que alguien más pueda usarlo o que responda a su problema. Si hay una mejor manera, por favor compártela y explica por qué.
$editor_id = 'custom_editor_box';
$uploaded_csv = get_post_meta( $post->ID, 'custom_editor_box', true);
wp_editor( $uploaded_csv, $editor_id );
Para guardar los datos:
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' );
¡Y eso es todo lo que hay que hacer!

Así es como lo tengo en uno de mis plugins:
<?php
wp_nonce_field('nonce_action', 'nonce_field');
$content = get_option('my_content');
wp_editor( $content, 'settings_wpeditor' );
?>
function settings_save_wpeditor(){
// verificar el nonce, actualizar la opción, etc...
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);
Asegúrate de agregar prefijos a tus variables y nombres de opciones y también consulta wp_nonce y wp_verify_nonce en el Codex de 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'] ) );
}
El valor se actualiza en wp_editor
pero no se actualiza en la base de datos, por favor verifica y solucionalo?

Hola, esta es la solución a tu problema. Solo copia y pega y verás.....
function dhansikhi_hukamnama_post_page(){
?>
<div class='wrap'>
<h2>Mi Página de Super Administrador</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('Guardar', 'primary');
?>
</form>
</div><!-- .wrap -->
<?php
}
add_action( 'admin_menu', 'dhansikhi_hukamnama_page' );
