wordpress - 在自定义 block 中需要特定的核心 block 样式

标签 wordpress dependencies wordpress-gutenberg gutenberg-blocks

我创建了一个自定义 block ,它使用与核心 Table block 相同的类名/结构在表中输出一些特定数据。

通常所有 CSS 都加载到页面上,因此我的 block 将继承主题的默认表格样式。

使用新的 WP 2022 主题时,它使用 add_filter( 'should_load_separate_core_block_assets', '__return_true' ),WordPress 只加载页面上 block 的 CSS,这意味着除非有表格在页面上,我的 block 不适用于主题的其余部分。

我一直在四处寻找,但似乎没有办法将特定 block 中的样式排入队列。

我正在像这样注册我的 block 样式:

wp_register_style(
  'my-block-style',
   MY_PLUGIN_URL.'/blocks/manage-sessions/style.css',
   array(''),
   '1.0.1'
);

register_block_type(
  'my-plugin/active-logins', 
  array(
    'style' => 'my-block-style',
    'editor_style' => 'my-block-editor-style',
    'editor_script' => 'my-block-script',
    'render_callback' => array($this, 'render_active_logins')
  )
);

在我的 wp_register_style 中,我尝试在数组中添加一些不同的依赖项,但似乎无法要求特定 block 的样式。

有没有人有这方面的经验?

根据下面的评论,我已将其添加到我的 block render_callback 中:

if( function_exists('wp_should_load_separate_core_block_assets') ) {
            if( wp_should_load_separate_core_block_assets() === true ) {

                $handle = 'wp-block-table';
                $core_styles = file_get_contents( includes_url( "/blocks/table/style.min.css" ) );
                if( !is_rtl() ) {
                    $theme_styles = file_get_contents( includes_url( "/blocks/table/theme.min.css" ) );
                } else {
                    $theme_styles = file_get_contents( includes_url( "/blocks/table/theme-rtl.min.css" ) );
                }
                
                $style_tag = "<style>$core_styles $theme_styles</style>";

            }
        }

这似乎适用于默认的 2022 主题,但我不确定它是否适用于其他主题,因为我只是获取核心 WP CSS。无法保证实际主题的文件夹结构,因此很难以这种方式手动获取 CSS 而无法将 block 识别为依赖项。

最佳答案

如果 should_load_separate_core_block_assets 过滤器为 true,您似乎可以添加 table 或其他核心 block 样式作为依赖项。根据我的测试,以下工作:

$my_block_style_deps = array();

if( function_exists('wp_should_load_separate_core_block_assets') ) {
    if( wp_should_load_separate_core_block_assets() === true ) {
        $my_block_style_deps[] = "wp-block-table";
    }
}

wp_register_style(
  'my-block-style',
   MY_PLUGIN_URL.'/blocks/manage-sessions/style.css',
   $my_block_style_deps,
   '1.0.1'
);

关于wordpress - 在自定义 block 中需要特定的核心 block 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71185556/

相关文章:

Wordpress - 自定义分类分页

php - Ajax 更新 Woocommerce 中购物车菜单上的产品数量

html - 汉堡菜单项折叠成 2 行

spring - Spark/Spring验证API依赖项冲突

java - 您知道任何 Eclipse 插件可以帮助查找项目对 Maven 存储库的依赖关系吗?

wordpress - 将 WordPress REST API 用于 Gutenberg block 时,不会对 HTML 实体进行解码

php - Wordpress 中的动态 CSS 文件

java - 使用 jar 文件中的资源?

php - 如何禁用某些帖子类型的古腾堡/ block 编辑器?

wordpress-gutenberg - 获取PHP中的可重用 block