古腾堡编辑器检查JS中是否有特定的块处于活动状态



我正在编辑器中使用自定义JS注册一个块:

function my_block_assets() {
  wp_register_script(
    'my-block-js', // 
    plugins_url( '/dist/my-block.js', dirname( __FILE__ ) ),
    array( 'jquery' ),
  );
  register_block_type(
    'custom/my-block', array(
      'style'         => 'my-block-css',        
      'editor_style'  => 'my-block-editor-css',
      'editor_script' => 'my-block-js',
    )
  );
}
add_action( 'init', 'my_block_assets' );

我想仅在编辑器中添加自定义块时才运行我的自定义 JS。我是这样做的:

$(window).on('load', function () {      
  var container = document.querySelector('.wp-block-custom-my-block');
  if ( container ) {
    // run custom js
  }
});

这似乎有效,但可能很慢。我可以使用任何特殊的JS函数来检查编辑器中是否添加了块?我找到了使用 has_block() 在前端检查 PHP 块的方法,但在编辑器中没有检查 JS 的块。

您可以从块数据模块中选择许多特定于块的数据。也就是说,以下内容在后端工作:

if ( wp.data.select('core/blocks').getBlockType('custom/my-block') ) { 
  //run custom js 
}

getBlockType文档 .

关于前端,我将使用has_block功能:

<?php 
mycustomblock_frontend_scripts() {
    if ( has_block( 'custom/my-block' ) ) {
        wp_enqueue_script('my-block-frontend-script');
    }
}
add_action( 'wp_enqueue_scripts', 'blockgallery_frontend_scripts' );

相关内容