Comprueba qué son los bloques de Gutenberg en post_content

4

Estoy trabajando en un diseño que tiene un estilo diferente si un bloque Gutenberg determinado está presente en una página. En otras palabras, si el primer bloque es un bloque Gutenberg personalizado, el post_title se procesa en otro lugar debido a las elecciones de diseño realizadas.

¿Hay alguna función en WordPress para obtener una lista de todos los bloques de Gutenberg presentes en el post_content?

    
pregunta Jeffrey von Grumbkow 02.08.2018 - 10:52

3 respuestas

4

WordPress 5.0+ tiene una función para esto: parse_blocks() . Para ver si el primer bloque en la publicación es el bloque Título, harías esto:

$post = get_post(); 

if ( has_blocks( $post->post_content ) ) {
    $blocks = parse_blocks( $post->post_content );

    if ( $blocks[0]->blockName === 'core/heading' ) {
    }
}
    
respondido por el Jacob Peattie 02.08.2018 - 12:52
1

La solución que estoy usando al momento de escribir verifica el post_content para los comentarios HTML de Gutenberg. Debido a los cambios futuros de Gutenberg, esto podría no funcionar en el futuro.

<?php    
$post_content = get_the_content( get_the_ID() ); // Get the post_content
preg_match_all('<!-- /wp:(.*?) -->', $post_content, $blocks); // Get all matches in between <!-- /wp: --> strings

// $blocks[1] contains the names of all the blocks present in the post_content
if ( in_array( 'heading', $blocks[1] ) ) {
    // Post content contains a wp:heading block
}
else {
    // Post content does not contain a wp:heading block
}
    
respondido por el Jeffrey von Grumbkow 02.08.2018 - 11:26
-1

A partir del lanzamiento de 5.0, estas funciones han quedado en desuso con Gutenberg ahora integrado en el núcleo. Me imagino, pero no he confirmado que estas funciones aún existan en el complemento independiente de Gutenberg.

En lugar de gutenberg_content_has_blocks use has_blocks

En lugar de gutenberg_parse_blocks use parse_blocks

    
respondido por el ian-hoyte 06.12.2018 - 20:09

Lea otras preguntas en las etiquetas