verifique si Gutenberg está actualmente en uso

10

¿Cómo puedo verificar si el editor que se está utilizando actualmente es Gutenberg en un complemento de WordPress?

Necesito esto porque Gutenberg carece de post_submitbox_misc_actions , así que necesito un recurso alternativo que solo se usará si el editor actual es Gutenberg.

    
pregunta NerdOfLinux 29.07.2018 - 18:48

3 respuestas

7

Hay una función is_gutenberg_page() que estará presente cuando active Gutenberg, por lo que puede verificar:

if( function_exists( 'is_gutenberg_page' ) )

Esto solo comprobará si Gutenberg está activado, y la función en sí comprobará si el editor actual está configurado para cargar Gutenberg. Así que el CÓDIGO se convierte en:

if( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() )

Por supuesto, esto debe verificarse desde las páginas del panel de administración y cuando los datos internos están listos para llamar a la función. Así que tendrás que hacer la comprobación utilizando un gancho adecuado . Por ejemplo, si lo marca con el enlace init , no funcionará .

El propio Gutenberg verifica la función is_gutenberg_page() desde la función gutenberg_init() , que se carga utilizando el enlace replace_editor . Así que replace_editor hook es un buen lugar para realizar esta comprobación.

Sin embargo, sugeriría el uso de admin_enqueue_scripts para realizar la comprobación, ya que:

  1. admin_enqueue_scripts es el primer enganche que se ejecuta después del mismo is_gutenberg_page() check que Gutenberg realiza.

  2. Debido a la naturaleza de Gutenberg, es más probable que cargue scripts / estilos externos para su propósito.

  3. admin_enqueue_scripts es un gancho bien conocido y solo se activa desde las páginas del panel de administración. Así que la parte frontal no se ve afectada por ella.

CÓDIGO de muestra (probado):

add_action( 'admin_enqueue_scripts', 'wpse_gutenberg_editor_test' );
function wpse_gutenberg_editor_test() {
    if( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() ) { 
        // your gutenberg editor related CODE here
    }   
    else {
        // this is not gutenberg.
        // this may not even be any editor, you need to check the screen.
    }   
}
    
respondido por el Fayaz 30.07.2018 - 16:40
1

has_blocks es la forma de verificar el contenido, pero también tenga en cuenta que si solo está verificando si la pantalla del editor de bloques se está utilizando en el área de administración, puede hacer una comprobación como esta (para tener en cuenta tanto la nueva editor de bloques y plugin de Gutenberg):

if (is_admin()) {
    global $current_screen;
    if (!isset($current_screen)) {$current_screen = get_current_screen();}
    if ( ( method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor() )
      || ( function_exists('is_gutenberg_page')) && is_gutenberg_page() ) ) {
        // DO SOMETHING HERE
    }
}
    
respondido por el majick 13.11.2018 - 02:00
0

Gutenberg 3.6 introdujo funciones como has_blocks y has_block . Reemplazan la función gutenberg_post_has_blocks en desuso.

Si has_blocks devuelve verdadero que Gutenberg se usó al editar la publicación.

Puede usar has_blocks() sin parámetros si el $post global ya está configurado (para algo así como un bucle de consulta) o verifique el contenido de la publicación directamente con has_blocks( $content )

    
respondido por el Andrei 29.08.2018 - 11:22

Lea otras preguntas en las etiquetas