alleyinteractive / wp-block-converter
使用PHP将HTML转换为Gutenberg块
v1.5.0
2024-08-12 20:29 UTC
Requires
- php: ^8.1|^8.2
- alleyinteractive/composer-wordpress-autoloader: ^1.0
- mantle-framework/support: ^1.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-18 03:04:16 UTC
README
使用PHP将HTML转换为Gutenberg块
安装
您可以通过Composer安装此软件包
composer require alleyinteractive/wp-block-converter
此项目旨在在WordPress环境中使用,因此建议在WordPress插件或主题中使用此软件包。目前不支持独立使用。此软件包不使用任何NPM库,如@wordpress/blocks
,来将HTML转换为块。
用法
使用此软件包如下将HTML转换为Gutenberg块
use Alley\WP\Block_Converter\Block_Converter; $converter = new Block_Converter( '<p>Some HTML</p>' ); $blocks = $converter->convert(); // Returns a string of converted blocks.
过滤块
可以逐个或对整个HTML体进行块过滤。
wp_block_converter_block
过滤特定节生成的块。
use Alley\WP\Block_Converter\Block; add_filter( 'wp_block_converter_block', function ( Block $block, \DOMElement $node ): ?Block { // Modify the block before it is serialized. $block->content = '...'; $block->blockName = '...'; $block->attributes = [ ... ]; return $block; }, 10, 2 );
wp_block_converter_document_html
过滤整个HTML体生成的块。
add_filter( 'wp_block_converter_document_html', function( string $blocks, \DOMNodeList $content ): string { // ... return $blocks; }, 10, 2 );
附件父级
在将HTML转换为块时,您可能需要将侧载的图像附加到帖子父级。HTML转换为块后,您可以获取创建的附件ID,或者简单地将它们附加到帖子。
$converter = new Block_Converter( '<p>Some HTML <img src="https://example.org/" /></p>' ); $blocks = $converter->convert(); // Get the attachment IDs that were created. $attachment_ids = $converter->get_created_attachment_ids(); // Attach the images to a post. $parent_id = 123; $converter->assign_parent_to_attachments( $parent_id );
使用宏扩展转换器
您可以使用宏扩展转换器以添加转换器尚不支持的自定义标签。
use Alley\WP\Block_Converter\Block_Converter; use Alley\WP\Block_Converter\Block; Block_Converter::macro( 'special-tag', function ( \DOMNode $node ) { return new Block( 'core/paragraph', [], $node->textContent ); } ); // You can also use the raw HTML with a helper method from Block Converter: Block_Converter::macro( 'special-tag', function ( \DOMNode $node ) { return new Block( 'core/paragraph', [], Block_Converter::get_node_html( $node ) ); } );
宏还可以完全覆盖转换器的默认行为。这在您需要为特定标签单独更改转换器的工作方式时非常有用。
use Alley\WP\Block_Converter\Block_Converter; use Alley\WP\Block_Converter\Block; Block_Converter::macro( 'p', function ( \DOMNode $node ) { if (special_condition()) { return new Block( 'core/paragraph', [ 'attribute' => 123 ], 'This is a paragraph' ); } return Block_Converter::p( $node ); } );
变更日志
有关最近更改的更多信息,请参阅变更日志。
致谢
此项目由Alley Interactive积极维护。喜欢您看到的内容?加入我们工作。
许可证
GNU通用公共许可证(GPL)。有关更多信息,请参阅许可证文件。