verificar se o Gutenberg está atualmente em uso

10

Como posso verificar se o editor que está sendo usado atualmente é o Gutenberg em um plug-in do WordPress?

Eu preciso disso porque Gutenberg não possui post_submitbox_misc_actions , então eu preciso de um fallback que só será usado se o atual editor for o Gutenberg.

    
por NerdOfLinux 29.07.2018 / 18:48

3 respostas

7

Existe a função is_gutenberg_page() que estará presente quando você ativar o Gutenberg, então você pode verificar:

if( function_exists( 'is_gutenberg_page' ) )

Isto apenas verificará se o Gutenberg está ativado e a própria função verificará se o editor atual está configurado para carregar o Gutenberg. Então o CÓDIGO se torna:

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

É claro que isso deve ser verificado nas páginas do painel de administração e quando os dados internos estiverem prontos para chamar a função. Então, você terá que fazer a verificação usando um gancho adequado . Por exemplo, se você marcar com init gancho, não funcionará .

O próprio Gutenberg verifica a função is_gutenberg_page() da função gutenberg_init() , que é carregada usando replace_editor hook. Então, replace_editor hook é um bom lugar para fazer essa verificação.

No entanto, sugiro o uso de admin_enqueue_scripts para fazer a verificação, pois:

  1. admin_enqueue_scripts é o primeiro gancho acionado após a mesma verificação de is_gutenberg_page() feita pelo Gutenberg.

  2. Devido à natureza do Gutenberg, é mais provável que você carregue scripts / estilos externos para o seu propósito.

  3. admin_enqueue_scripts é um gancho bem conhecido e é acionado apenas pelas páginas do painel de administração. Então, o front end não é afetado por isso.

Exemplo de CÓDIGO (testado):

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.
    }   
}
    
por Fayaz 30.07.2018 / 16:40
1

has_blocks é o caminho a percorrer para verificar o conteúdo, mas também observe se você está apenas verificando se a tela do editor de bloco está sendo usada na área administrativa, você pode fazer uma verificação como essa (para considerar ambos editor de bloco e plugin 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
    }
}
    
por majick 13.11.2018 / 02:00
0

Gutenberg 3.6 introduziu funções como has_blocks e has_block . Eles substituem a função gutenberg_post_has_blocks reprovada.

Se has_blocks retornar true do que Gutenberg foi usado durante a edição da postagem.

Você pode usar has_blocks() sem params se o $post global já estiver definido (para algo como um loop de consulta) ou verificar o conteúdo da postagem diretamente com has_blocks( $content )

    
por Andrei 29.08.2018 / 11:22