Estoy jugando con Gutenberg antes de su inclusión en el núcleo, y me gustaría saber cómo extender el bloque de galería existente para cambiar su visualización. Por ejemplo, en lugar de una cuadrícula de miniaturas, me gustaría mostrar una presentación de diapositivas de imágenes. ¿Es posible? ¿Si es así, cómo? Cualquier ayuda sería apreciada.
images
gallery
block-editor
leemon
fuente
fuente

Respuestas:
Ok, he estado jugando con esto por un rato y he logrado cambiar la salida del bloque de la Galería, con las siguientes advertencias:
@wordpress/hooksmientras se debate sobre qué sistema de ganchos usar en Core está en curso .Lo primero que debemos hacer es registrar un script. Esto se hace con
wp_enqueue_scripts(), pero en elenqueue_block_editor_assetsgancho.El script debe tener el
wp-blocksscript como una dependencia. Es casi seguro que ya está cargado en el editor, pero convertirlo en una dependencia presumiblemente asegura que se cargue antes de nuestro script.El HTML para la salida de un bloque es manejado por el
save()método del bloque. Puedes ver los bloques de la Galería en este archivo .En esta etapa (marzo de 2018) Gutenberg es compatible con un filtro en el método para guardar de bloques,
blocks.getSaveElement. Podemos agregar un gancho a esto en JavaScript como este:El primer argumento es el nombre del gancho, el segundo argumento es, creo, un espacio de nombres, y el último argumento es la función de devolución de llamada.
Como estamos reemplazando el
save()método del bloque, necesitamos devolver un nuevo elemento. Sin embargo, este no es un elemento HTML normal que debemos devolver. Necesitamos devolver un elemento React .Cuando observa el
save()método del bloque original, lo que ve es JSX. React, que Gutenberg usa bajo el capó, lo admite para representar elementos. Vea este artículo para más información al respecto.JSX normalmente requiere un paso de compilación, pero como no estoy introduciendo un paso de compilación para este ejemplo, necesitamos una forma de crear un elemento sin JSX. React proporciona esto con
createElement(). WordPress proporciona un contenedor para esta y otras funcionalidades de reacción en forma dewp.element. Así que para usarcreateElement()usamoswp.element.createElement().En la función de devolución de llamada para
blocks.getSaveElementobtenemos:elementEl elemento original creado por el bloque.blockTypeUn objeto que representa el bloque que se está utilizando.attributesLas propiedades de la instancia de bloque. En nuestro ejemplo, esto incluye las imágenes en la galería y configuraciones como el número de columnas.Entonces nuestra función de devolución de llamada necesita:
Aquí está un ejemplo completo que simplemente se da salida a una
ulcon una clase,my-galleryylies para cada imagen con la clasemy-gallery-itemy la yimgen cada uno con lasrcunidad para obtener la URL de la imagen.Algunas cosas a tener en cuenta:
ul.wp-block-gallery .blocks-gallery-item, por lo que este marcado y esas clases son necesarias para poder editar el bloque. Este marcado también se utiliza para el estilo predeterminado.attributes.images.mapse repite sobre cada imagen y devuelve una matriz de elementos secundarios como contenido para el elemento principal. Dentro de estos elementos hay otro elemento hijo para la imagen misma.fuente
Aquí para proporcionar una respuesta actualizada. Encontré esta publicación extremadamente útil para responder la pregunta de cómo extender el Bloque de Galería.
En resumen, es recomendable crear un nuevo bloque en lugar de extender uno existente. De la publicación en mi enlace de arriba:
El enlace de arriba también hace referencia al complemento Create-Guten_Block que es una herramienta de línea de comandos que generará todo lo que necesita para comenzar con la creación de bloques. La herramienta es muy fácil de usar y fácil de configurar.
Con estos recursos, pude descubrir cómo desarrollar un bloque de galería personalizado en poco tiempo
fuente