解决ACF Blocks同一样式表多次加载的不同区块的问题,可以使用以下代码示例:
// 注册ACF Blocks
function register_acf_blocks() {
// 注册样式表
wp_register_style('acf-blocks-style', get_template_directory_uri() . '/css/acf-blocks.css');
// 注册区块
acf_register_block(array(
'name' => 'my-acf-block',
'title' => 'My ACF Block',
'description' => 'A custom ACF block.',
'render_callback' => 'render_my_acf_block',
'enqueue_style' => 'acf-blocks-style', // 加载样式表
));
}
add_action('acf/init', 'register_acf_blocks');
// 渲染ACF Block
function render_my_acf_block($block, $content = '', $is_preview = false) {
// 获取区块ID
$block_id = 'my-acf-block-' . $block['id'];
// 添加区块ID到样式表类名,确保每个区块有唯一的样式
wp_add_inline_style('acf-blocks-style', '.' . $block_id . ' { color: red; }');
// 输出区块HTML
echo 'This is my ACF block.';
}
上述代码中,我们首先在register_acf_blocks
函数中注册了ACF Block,并通过wp_register_style
函数注册了样式表。然后,在enqueue_style
参数中指定了要加载的样式表。
接着,在render_my_acf_block
函数中,我们获取了当前区块的ID,并将其添加到样式表类名中,确保每个区块有唯一的样式。然后,我们输出了区块的HTML内容。
这样,每个ACF Block实例都会加载同一个样式表,但是通过为每个区块添加唯一的类名,可以确保样式只应用于特定的区块。