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