这个标记是在js端生成的,并保存在块编辑器的内容中,这就是为什么似乎没有用于此的本地PHP函数的原因。
然而,我在Gutenberg插件的一个“实验”类中发现了一个PHP方法,它可以做到这一点。您可以在此处看到:https://github.com/WordPress/gutenberg/blob/master/lib/class-experimental-wp-widget-blocks-manager.php#L265
您可以将其作为方法添加到自己的类中,或转换为标准函数,如下所示:
/**
* Serializes a block.
*
* @param array $block Block object.
* @return string String representing the block.
*/
function serialize_block( $block ) {
if ( ! isset( $block[\'blockName\'] ) ) {
return false;
}
$name = $block[\'blockName\'];
if ( 0 === strpos( $name, \'core/\' ) ) {
$name = substr( $name, strlen( \'core/\' ) );
}
if ( empty( $block[\'attrs\'] ) ) {
$opening_tag_suffix = \'\';
} else {
$opening_tag_suffix = \' \' . json_encode( $block[\'attrs\'] );
}
if ( empty( $block[\'innerHTML\'] ) ) {
return sprintf(
\'<!-- wp:%s%s /-->\',
$name,
$opening_tag_suffix
);
} else {
return sprintf(
\'<!-- wp:%1$s%2$s -->%3$s<!-- /wp:%1$s -->\',
$name,
$opening_tag_suffix,
$block[\'innerHTML\']
);
}
}