WordPress仅在使用模式时才将样式表入队

fslejnso  于 2023-10-16  发布在  WordPress
关注(0)|答案(1)|浏览(110)

使用Wordpress 6.3块编辑器( gutenberg ),我们可以注册块模式。这些模式是预先配置的块集合。

add_action('init', function () {

    register_block_pattern(
        'my_test_pattern',
        array(
            'title' => 'My Test Pattern',
            "categories" => ['text'],
            'description' => 'Test',
            'content' => "<!-- wp:paragraph -->
            <p>Something</p>
            <!-- /wp:paragraph -->",
        )
    );

});

我们可以检查此模式是否在整个网站上注册:

WP_Block_Patterns_Registry::get_instance()->is_registered("my_test_pattern")

但是,有没有一种方法可以检查它何时被实际使用,以便我们可以在页面上排队样式表只有当它被使用时。
对于块,有一个名为has_block("block-name")的函数,但对于has_pattern没有类似的函数。
编辑/想法
我认为问题可能是,虽然块与它们的名称一起保存在post_content中,但模式并没有与它们包含的块一起存储在post_content中。
一个想法是创建一个自定义块。在InspectorControl中提供一个字段,以给予一个自定义模式名称,当该块呈现它时,它将使用所提供的模式名称(如果它还没有被排队)来加密一个css文件。我相信那会起作用,但似乎有点过头了。

qhhrdooz

qhhrdooz1#

假设块模式是块的集合,并且各个块都有自己的关联样式,那么也许您正在寻找的东西可以用Block Themes来实现。这样,您可以在HTML模板文件中声明所需的块模式作为主题的一部分,并在块一起出现时通过theme.json更好地控制CSS样式。
另一个选择是当你在文章/页面中添加一个块模式时,将其转换为synced pattern(* 以前称为可重用块 *)。现在,同步模式有一个唯一的ID与它相关联,可以用来找出它是否在帖子/页面中,或者包含一个自定义的CSS样式来定位它。

相关问题