我不知道这是否可能,但无论如何我正在尝试。 我创建了一个插件,我想在其中加载 WordPress 中所有预先设计的模式。
我的插件包含以下代码(用于注册我的模式)
function register_my_pattern() {
register_block_pattern(
'my-plugin/my-pattern',
array(
'title' => __( 'My Pattern Name', 'my-plugin' ),
'categories' => array('my-pattern-category'),
'content' => '<!-- wp:group {"backgroundColor":"vivid-green-cyan","layout":{"type":"constrained"}} --> <div class="wp-block-group has-vivid-green-cyan-background-color has-background"><!-- wp:heading --> <h2 class="wp-block-heading">Testing my block</h2> <!-- /wp:heading --></div> <!-- /wp:group -->',
)
);
}
add_action( 'init', 'register_my_pattern' );
问题是某些模式的内容变得相当长,我想要一种简单的方法来编辑它们。我讨厌这样一个事实:我需要缩小代码才能通过 register_block_pattern 加载它。 我真的很想将模式的实际内容放在一个单独的文件中,然后从那里加载它(这样我就不必缩小它们,这样我就可以轻松编辑它们)。
所以我尝试这样做: 但这只是在编辑器中添加模式时打印文件的 URL
function register_my_pattern() {
register_block_pattern(
'my-plugin/my-pattern',
array(
'title' => __( 'My Pattern Name', 'my-plugin' ),
'categories' => array('my-pattern-category'),
'content' => plugin_dir_url( __FILE__ ).'my-pattern-file.php',
)
);
}
add_action( 'init', 'register_my_pattern' );
我也尝试过这个: 但这会在打开编辑器时加载内容(即使未添加块)
function register_my_pattern() {
register_block_pattern(
'my-plugin/my-pattern',
array(
'title' => __( 'My Pattern Name', 'my-plugin' ),
'categories' => array('my-pattern-category'),
'content' => include( plugin_dir_path( __FILE__ ) . 'my-pattern-file.php'),
)
);
}
add_action( 'init', 'register_my_pattern' );
有什么办法可以做到这一点吗?或者说这完全不可能?
您可以注册 PHP 文件中定义的块模式,方法是将它们包含在块主题的 patterns 目录 中(注意。WordPress 版本 6.0+)。
虽然这不是像您的示例那样基于插件的解决方案,但它保留了 PHP 的块模式和主题的一部分。
*.php
模式文件放置在 your-theme-name/patterns/
中,并在主题处于活动状态时自动加载到编辑器中。