Contenido del editor de Gutenberg en JavaScript (WordPress)

2 minutos de lectura
avatar de usuario
Shramee

En los días de TMCE, podíamos obtener fácilmente contenido de editor con editor.getContent(). Sin embargo, en el nuevo editor de Gutenberg, no puedo encontrar un método para hacerlo.

Necesito todo el contenido del editor como HTML (la forma en que se guardará en la base de datos).

encontré wp.block.serialize() método que suena prometedor. Pero parece necesitar bloques (como parámetro). Así que estoy un poco atascado.



A partir de la versión 3.1. de Gutenberg, prueba esto:

para obtener el contenido del bloque simple:

var originalContent = wp.data.select( "core/editor" ).getCurrentPost().content;
var editedContent = wp.data.select( "core/editor" ).getEditedPostContent();

para renderizar la publicación (transformar a bloques):

wp.blocks.parse( editedContent );


Es posible que desee explorar la window._wpGutenbergPost.content que tiene tanto un raw y rendered contenido. Esto es, en este momento. Probablemente las cosas cambien 🙂


  • Gracias Andrea, pero eso parece devolver contenido guardado en la base de datos, no lo que el usuario ha editado en el editor…
    – Shramee
    11 de enero de 2018 a las 13:11
  • Esto parece estar desactualizado. Vea mi respuesta a continuación.
    – Caudal
    25 de junio de 2018 a las 12:10

Puede usar selectores, nos permite recuperar datos y, de manera similar, por ejemplo, para actualizar el título de la publicación que se está editando en Gutenberg, puede hacer:

wp.data.dispatch( 'core/editor' ).editPost( { title: 'New Title' } );

Puedes consultar el archivo de acciones aquí https://github.com/WordPress/gutenberg/blob/v2.9.2/editor/store/actions.js para ver la lista completa de las acciones definidas por el espacio de nombres principal/editor.

Ver más: https://riad.blog/2018/06/07/administración-eficiente-de-datos-de-clientes-para-complementos-de-wordpress/


  • ¿Cómo editar el contenido? Intenté wp.data.dispatch( ‘core/editor’ ).editPost( { content: ‘\n

    Te quiero papi dddhhhhh.

    \n‘ } ); pero actualiza el código en el editor HTML y bloquea no actualiza su contenido
    – Atef
    08/09/2018 a las 22:55

avatar de usuario
hormiga-c

Tengo un problema similar pero no puedo comentar. La respuesta proporcionada por Flow que establece el título de la publicación pero a partir de 4.5.1 no maneja el contenido.

Para actualizar el contenido de la publicación, pude insertar un bloque de párrafo. Aquí está mi código:

wp.data.dispatch( 'core/editor' ).editPost( { title: 'New Title' } );
var editedContent = wp.data.select( "core/editor" ).getEditedPostContent();
var newBlock = wp.blocks.createBlock( "core/paragraph", {
    content: editedContent,
});
wp.data.dispatch( "core/editor" ).insertBlocks( newBlock );

¿Ha sido útil esta solución?