alleyinteractive/wp-block-converter

使用PHP将HTML转换为Gutenberg块

v1.5.0 2024-08-12 20:29 UTC

This package is auto-updated.

Last update: 2024-09-18 03:04:16 UTC


README

Testing Suite

使用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)。有关更多信息,请参阅许可证文件