Añadir un editor de WordPress a un plugin personalizado y guardar los datos

19 mar 2015, 17:39:14
Vistas: 16.2K
Votos: 3

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!

0
Todas las respuestas a la pregunta 4
1

¡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!

20 mar 2015 11:24:36
Comentarios

Deberías sanitizar esto con wp_kses_post() antes de guardarlo en la base de datos.

GhostToast GhostToast
19 mar 2016 01:10:17
0

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

26 oct 2016 21:24:09
0
$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?

25 mar 2017 12:50:26
1

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' );
20 ago 2017 16:44:58
Comentarios

¡El problema ya estaba resuelto!

Interactive Interactive
21 ago 2017 14:36:30