Están muy bien los bloques del nuevo editor de WordPress pero ¿hacen falta todo esos bloques? ¿necesitas insertar tantos bloques en tu labor diaria o podrías deshacerte de algunos para así localizar más fácil los demás?
Vamos a ver cómo hacerlo.
Índice de contenidos
Cómo decidir qué bloques mostrar en el editor y cuáles no
Hay un modo sencillo de decidir qué bloques concretos aparecerán a la hora de insertar bloques. Para ello nos ayudaremos de ganchos en el archivo functions.php
del tema activo o en tu plugin personalizado.
En concreto usaré el gancho allowed_block_types
, que permite especificar qué bloques usar en nuestra web, y además mediante el parámetro $post
podemos usar distintos bloques en distintos tipos de contenido, mucho más chulo.
La parte sencilla es crear una función que decidir qué bloques quiero que estén disponibles, en general, da igual el tipo de contenido. Sería así:
/* Decidir qué bloques se verán en el editor */ add_filter( 'allowed_block_types', 'ayudawp_allowed_block_types' ); function ayudawp_allowed_block_types( $allowed_blocks ) { return array( 'core/image', 'core/paragraph', 'core/heading', 'core/list' ); }
Una vez guarde los cambios mi lista de bloques se habrá reducido a las contenidas en el array
de la función, en el ejemplo:
- Imagen
- Párrafo
- Encabezado
- Lista
Como habrás comprobado no quitamos bloques sino todo lo contrario, decidimos qué bloques estarán disponibles.
No tengo ni que decir lo práctico que es esto de cara a tus clientes, para que tengan disponibles solamente los bloques que tienen que utilizar. Imagina la importancia de este control en un entorno editorial.
Cómo quitar bloques según el tipo de contenido
Otra posibilidad de uso del código anterior es determinar que aparezcan distintos bloques según el tipo de contenido, el CPT.
De nuevo, se haría así:
/* Decidir qué bloques se verán en el editor */ add_filter( 'allowed_block_types', 'ayudawp_allowed_block_types', 10, 2 ); functionayudawp_allowed_block_types( $allowed_blocks, $post ) { $allowed_blocks = array( 'core/image', 'core/paragraph', 'core/heading', 'core/list' ); if( $post->post_type === 'page' ) { $allowed_blocks[] = 'core/shortcode'; } return $allowed_blocks; }
La primera parte del array define los bloques disponibles para cualquier tipo de contenido (CPT) y, más abajo, en el condicional, definimos mediante el parámetro $post
que, además, en las páginas, habrá otro bloque disponible, en este ejemplo el de shortcode.
Solo tienes que saber los slugs de cada bloque, para tú añadir los que necesites, y son todos estos:
Lista de slugs de todos los bloques
La lista completa de los slugs de todos los bloques, para usarlos en esta función es esta…
Bloques comunes
core/paragraph
core/image
core/heading
core/gallery
core/list
core/quote
core/audio
core/cover-image
core/file
core/video
Elementos de diseño
core/button
core/text-columns
— Columnascore/media-text
— Medios y textocore/more
core/nextpage
— Salto de páginacore/separator
core/spacer
Bloques de formato
core/table
core/verse
core/code
core/freeform
— Clásicocore/html
— HTML personalizadocore/preformatted
core/pullquote
Bloques de widgets
core/shortcode
core/archives
core/categories
core/latest-comments
core/latest-posts
Bloques de incrustados
¿Verdad que son demasiados?
core/embed
core-embed/twitter
core-embed/youtube
core-embed/facebook
core-embed/instagram
core-embed/wordpress
core-embed/soundcloud
core-embed/spotify
core-embed/flickr
core-embed/vimeo
core-embed/animoto
core-embed/cloudup
core-embed/collegehumor
core-embed/dailymotion
core-embed/funnyordie
core-embed/hulu
core-embed/imgur
core-embed/issuu
core-embed/kickstarter
core-embed/meetup-com
core-embed/mixcloud
core-embed/photobucket
core-embed/polldaddy
core-embed/reddit
core-embed/reverbnation
core-embed/screencast
core-embed/scribd
core-embed/slideshare
core-embed/smugmug
core-embed/speaker
core-embed/ted
core-embed/tumblr
core-embed/videopress
core-embed/wordpress-tv
Y ya está, ahora tienes el poder y la libertad de decidir qué bloques necesitas y cuáles no, con una simple función.
¡Eh espera! ¿No se puede hacer con plugins?
Cierto, se me olvidaba, pero pensaba que ya habías hecho mi curso del editor de bloques Gutenberg de WordPress, donde hablo algo de ello.
El mejor plugin que puedes usar para decidir qué bloques mostrar es Disable Gutenberg Blocks. Una vez instalado ofrece una página de ajustes (Ajustes > Disable Blocks) en la que decides qué bloques se mostrarán y cuáles no.
Y ya está, que lo disfrutes, decidiendo con libertad qué necesitas y qué no.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
¿Por un casual existe alguna manera de ampliar las funcionalidades de los bloques por defecto?
Me explico. He visto que el bloque de citas tiene dos estilos a elegir, pero he pensado si se podria añadir mas estilos. Y lo mismo con otros bloques, como por ejemplo el de imagenes, que no tiene estilos, pero estaria bien tener la posibilidad de poder añadirle algunos extra para poder tener mas opciones a la hora de diseñar una entrada.
Por mas que busco, y puede ser porque no he buscado bien, no encuentro por ningun lado algo que me aclare esta cuestion, y seria una gran opcion a tener en cuenta poder ampliar los bloques de serie en vez de tener que crear bloques nuevos para cosas que se podrian solucionar asi.
Claro, todo eso se puede personalizar para tu tema, como expliqué aquí:
https://ayudawp.com/como-hacer-que-tu-tema-wordpress-sea-compatible-con-gutenberg/
La publicación me ha sido de gran ayuda, pero no encontré directamente en él lo que buscaba. Sin embargo, mirando y consultando el codigo, si me ha llevado al manual de Gutenberg donde explican lo que yo buscaba, que era concretamente esto: https://wordpress.org/gutenberg/handbook/designers-developers/developers/filters/block-filters/#block-style-variations
Al final todos los caminos llevan a roma.
Grande todas las publicaciones de AyudadWp.
¿como puedo eliminar los bloques que no quiera en el personalizador?
He probado el código y en el editor de gutenberg funciona. Pero en el personalizador siguen apareciendo.
Gracias por todo.