# 解析器过滤器

当编辑器与区块交互时，这些区块会以数据结构的形式存储在内存中，包含若干基本属性和特征。在保存工作文章时，我们会将这些数据结构序列化为特定的HTML结构，并将生成的字符串存储到WordPress数据库文章的`post_content`属性中。当我们将文章重新加载到编辑器中时，需要进行反向转换，从序列化的HTML格式重建这些数据结构。

将序列化HTML加载到编辑器的过程由*区块解析器*执行。该转换的正式规范编码在`@wordpress/block-serialization-spec-parser`包内的解析表达式语法（PEG）中。编辑器提供了该语法的默认解析器实现，但可能存在多种原因需要将其替换为自定义实现。我们可以通过相应的过滤器注入自定义解析器实现。

## 服务端解析器

如果插件希望以结构化形式而非纯HTML字符串形式处理文章，可以通过解析器实现这一需求。

## 客户端解析器

编辑器在交互式处理文章时使用客户端解析器。后端将纯HTML字符串形式发送到浏览器，随后编辑器执行首次解析以完成初始化。

## 过滤器

要替换服务端解析器，请使用`block_parser_class`过滤器。该过滤器会转换解析器类的字符串类名，此类需包含`parse`方法。

*示例：*

```php
class EmptyParser {
  public function parse( $post_content ) {
    // 返回空文档
    return array();
  }
}

function wpdocs_select_empty_parser( $prev_parser_class ) {
    return 'EmptyParser';
}

add_filter( 'block_parser_class', 'wpdocs_select_empty_parser', 10, 1 );
```

> **注意**：目前暂不支持替换客户端解析器。