Gutenberg todo lo que necesita saber sobre el último editor de WordPress
Gutenberg es un nuevo editor para WordPress que lo hará totalmente. Reemplace el editor actual de TinyMCE. Es un proyecto ambicioso que podría cambiar WordPress de muchas maneras y afectaría tanto a los usuarios finales regulares como a los desarrolladores, específicamente, a aquellos que dependen de la pantalla del editor para trabajar en WordPress. Así es como se ve.
Gutenberg también introduce un nuevo paradigma en WordPress llamado “Bloquear”.
“Bloquear” es el término abstracto usado para describir unidades de marcado que están compuestas por el contenido o diseño de una página web. La idea combina conceptos de lo que en WordPress hoy conseguimos con códigos cortos, HTML personalizado e incrustación en una única API consistente y experiencia de usuario.
Configuración del proyecto
Sabiendo el hecho de que Gutenberg está construido sobre React, algunos desarrolladores están preocupados de que La barrera es demasiado alta para los desarrolladores de nivel de entrada para desarrollar Gutenberg.
Configurar React.js puede llevar bastante tiempo y ser confuso si recién comienza a usarlo. Necesitará al menos, JSX transformer, Babel, dependiendo de su código, es posible que necesite algunos complementos de Babel y un Bundler como Webpack, Rollup o Parcel.
por suerte, algunas personas dentro de la comunidad de WordPress intensificaron y están tratando de hacer que el desarrollo de Gutenberg sea lo más fácil posible para que todos lo sigan. Hoy en día, tenemos una herramienta que generará un modelo de Gutenberg para Podemos empezar a escribir el código de inmediato. En lugar de confundir con las herramientas y las configuraciones.
Crear Guten Block
los crear-guten-block
Es un proyecto iniciado por Ahmad Awais. Es un kit de herramientas de configuración cero (# 0CJS
) que te permitirá desarrollar el bloque Gutenberg con algunos presets modernos, incluyendo React, Webpack, ESNext, Babel, ESLint y Sass. Sigue las instrucciones para empezar a crear Guten Block..
Utilizando ES5 (ECMAScript 5)
Usando todas estas herramientas para crear un simple “Hola Mundo” Bloquear puede parecer demasiado. Si te gusta mantener tus pilas escasas, puedes desarrollar un bloque Gutenberg usando un simple ECMAScript 5 con el que puedas estar familiarizado. Si usted tiene WP-CLI 1.5.0 instalado en su computadora, simplemente puedes correr ...
bloque de andamio wp[--título = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--force]
… a genere el bloque de Gutenberg para su plugin o tema. Este enfoque es más sensato, en particular, para los complementos y temas existentes que haya desarrollado antes de la era de Gutenberg..
En lugar de crear un nuevo complemento para acomodar los bloques de Gutenberg, es posible que desee integrar los bloques a sus complementos o los temas. Y para que este tutorial sea fácil de seguir para todos., utilizaremos ECMAScript 5 con WP-CLI.
Registro de un nuevo bloque
Gutenberg se desarrolla actualmente como un complemento y se fusionará con WordPress 5.0 cuando el equipo sienta que está listo. Así que, por el momento, deberá instalarlo desde el Página de complementos en wp-admin
. Una vez que lo haya instalado y activado, ejecute el siguiente comando en la Terminal o en el símbolo del sistema si está en una máquina con Windows.
serie de bloques de andamio wp --title = "HTML5 Series" --theme
Este comando generará un Bloque al tema actualmente activo. Nuestro bloque consistirá en los siguientes archivos:
. UNA¢¿??? ???¢¿??? ???¢¿¿AUTOMÓVIL CLUB BRITÁNICO?? serie â¿?????????¢¿??? ???¢¿??? ???¢¿¿AUTOMÓVIL CLUB BRITÁNICO?? block.js â¿?????????¢¿??? ???¢¿??? ???¢¿¿AUTOMÓVIL CLUB BRITÁNICO?? editor.css â¿?????????¢¿??? ???¢¿??? ???¢¿¿AUTOMÓVIL CLUB BRITÁNICO?? style.css â¿??? ???¢¿??? ???¢¿¿AUTOMÓVIL CLUB BRITÁNICO?? series.php
Carguemos el archivo principal de nuestros bloques en el funciones.php
de nuestro tema:
if (function_exists ('register_block_type')) require get_template_directory (). '/blocks/series.php';
Observe que adjuntamos la carga del archivo con un condicional. Esto garantiza compatibilidad con la versión anterior de WordPress que nuestro bloque solo se carga cuando Gutenberg está presente. Nuestro bloque ahora debería estar disponible dentro de la interfaz de Gutenberg..
Así se ve cuando insertamos el bloque..
APIs de Gutenberg
Gutenberg introduce dos conjuntos de API para registrar un nuevo Bloque. Si miramos el series.php
, Encontraremos el siguiente código que registra nuestro nuevo Bloque. También carga la hoja de estilo y los scripts de Java en el front-end y el editor.
register_block_type ('twentyseventeen / series', array ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Como podemos ver arriba, nuestro bloque se llama veintisiete / serie
, el nombre del Bloque debe ser único y tener un espacio de nombre para evitar la colisión con los otros Bloques que traen los otros complementos.
además, Gutenberg proporciona un conjunto de nuevas API de JavaScript para interactuar con el “Bloquear” interfaz en el editor. Ya que la API es bastante abundante, nos enfocaremos en algunos aspectos específicos que creo que deberías saber para obtener un Bloque de Gutenberg simple pero que funcione..
wp.blocks.registerBlockType
Primero, estaremos investigando wp.blocks.registerBlockType
. Esta función se utiliza para registrar un nuevo “Bloquear” al editor de Gutenberg. Requiere dos argumentos. El primer argumento es el nombre del bloque que debe seguir al nombre registrado en el register_block_type
Funciona en el lado de PHP. El segundo argumento es un Objeto que define las propiedades del bloque como título, categoría y un par de funciones para representar la interfaz de Bloque.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), categoría: 'widgets', palabras clave: ['html'], edit: function (props) , save: function (props) );
wp.element.createElement
Esta función le permite crear el elemento dentro de la “Bloquear” en el editor de posts. los wp.element.createElement
La función es básicamente una abstracción del React. createElement ()
La función así acepta el mismo conjunto de argumentos. El primer argumento toma el tipo de elemento, por ejemplo, un párrafo, un lapso
, o un div
Como se muestra abajo:
wp.element.createElement ('div');
Podemos alias la función en una variable por lo que es más corto para escribir. Por ejemplo:
var el = wp.element.createElement; el ('div');
Si tu Prefiero usar la nueva sintaxis de ES6, También puedes hacerlo de esta manera:
const createElement: el = wp.element; el ('div');
También podemos agregar los atributos del elemento tales como el clase
nombre o carné de identidad
en el segundo parámetro de la siguiente manera:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
los div
que creamos no tendría sentido sin el contenido. Podemos Añadir el contenido en el argumento del tercer parámetro.:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Este artículo es parte de nuestra "Serie de tutoriales HTML5 / CSS3" - dedicado para ayudarlo a ser un mejor diseñador y / o desarrollador. Haga clic aquí para ver más artículos de la misma serie ');
wp.components
los wp.components
Contiene una colección de, como su nombre lo indica, los componentes de Gutenberg. Técnicamente, estos componentes son componentes personalizados de React que incluyen Button, Popover, Spinner, Tooltip y muchos otros. Podemos reutilizar estos componentes en nuestro propio Bloque. En el siguiente ejemplo, agregamos un componente de botón.
Botón var = wp.components.Button; el (Button, 'class': 'download-button',, 'Download');
Atributos
Los Atributos son la forma de almacenar los datos en nuestro Bloque, estos datos podrían ser como el contenido, los colores, las alineaciones, la URL, etc. Podemos obtener los atributos de las Propiedades pasadas en el editar()
función, de la siguiente manera:
edit: function (props) var content = props.attributes.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', contenido);
Para actualizar los atributos, usamos el setAttributes ()
función. Por lo general, cambiaríamos el contenido en ciertas acciones, como cuando se hace clic en un botón, se completa una entrada, se selecciona una opción, etc. En el siguiente ejemplo, lo usamos para agregar una retroceder contenido de nuestro Bloque en caso de que algo inesperado le sucediera a nuestro seriesContenido
Atributo.
edit: function (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! Aquí está el contenido alternativo.' ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', content),];
Salvando el bloque
los salvar()
función funciona de manera similar a la editar()
, excepto que define el contenido de nuestro Bloque para guardar en la base de datos de publicaciones. Guardar el contenido del Bloque es bastante sencillo, como podemos ver a continuación:
save: function (props) if (! props ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', content),];
Que sigue?
Gutenberg cambiará el ecosistema de WordPress para mejor (o posiblemente peor). Permite a los desarrolladores Adopta una nueva forma de desarrollar complementos y temas de WordPress.. Gutenberg es solo el comienzo. Pronto el “Bloquear” El paradigma se ampliará a otras áreas de WordPress, como las API de configuración y los widgets..
Aprende JavaScript en profundidad; Es la única forma de entrar en Gutenberg y mantenerse relevante para el futuro en la industria de WordPress. Si ya está familiarizado con los conceptos básicos de JavaScript, las peculiaridades, las funciones, las herramientas, los bienes y los males, estoy seguro de que se pondrá al día con Gutenberg..
Como se mencionó, Gutenberg expone una gran cantidad de API, lo suficiente para hacer casi cualquier cosa a su Bloque. Usted puede elegir si desea codifique su Bloque con un JavaScript antiguo, JavaScript con sintaxis de ES6, Reacción o incluso Vue.
Ideas e inspiraciones
He creado un Gutenberg Block muy (muy) simple que puedes encontrar en el repositorio de nuestra cuenta de Github. Además, también he reunido varios repositorios desde donde puedes inspirarte para construir un Bloque más complejo.
- Gutenblocks - Una colección de bloques de Mathieu Viet escrita en JavaScript con la sintaxis ES5
- Jetpack Gutenblocks Project - una colección de bloques incluidos en Jetpack
- Una lista de ejemplos de implementación de Gutenberg incluida con Vue.js
Referencia adicional
- Repositorio oficial de Gutenberg
- Manual de Gutenberg