咨询热线:15811653920

2009-2017

我们一直走在国际设计的前沿,追求与研究从未停止

我的位置:首页 > 学院 > WordPress

WordPress教程:WordPress 5.7 引入新钩子,用于过滤单个区块的内容

WordPress 的 render_block()函数负责将每个单独的区块呈现为HTML字符串。有几种可用的过滤器,它们允许插件和主题更改区块的呈现方式。

pre_render_block:render_block()通过返回非空值允许短路。
render_block_data:在处理render_block()前,过滤要渲染的块。
render_block_context:过滤提供给渲染块的默认上下文。
render_block:过滤单个块的内容。
虽然这些过滤器可以对如何渲染单个块进行大量控制,但是在进行任何修改之前,挂钩函数需要对正在渲染的块具有所需块类型进行一些验证。

在WordPress 5.7中,将引入一个新的动态过滤器 render_block_{$this->name},从而使函数仅可以挂钩到特定类型的块。在新的过滤器中,{$this->name}代表已注册块的名称或slug别名。例如,可以使用render_block_core/paragraph过滤以core/paragraph名称注册的段落块。

这减少了以前针对特定块类型的呈现所需的代码量。

用法示例
以下示例将过滤所有 core/paragraph块,并将它们包装在一个<div>元素中。

/**
* Wrap all core/paragragh blocks in a <div>.
*
* @param string $block_content The block content about to be appended.
* @param array  $block         The full block, including name and attributes.
* @return string Modified block content.
*/
function wporg_paragraph_block_wrapper( $block_content, $block ) {
    $content  = '<div class="my-custom-wrapper">' . $block_content . '</div>';
    return $content;
}
add_filter( 'render_block_core/paragraph', 'wporg_paragraph_block_wrapper', 10, 2 );
输出结果:

<div class="my-custom-wrapper">
<!-- block content -->
</div>
注意:所有WordPress Core区块类型的名称都以前缀core/。对于在插件或主题中声明的自定义块类型,过滤器的名称可能类似于render_block_my-plugin/my-custom-block。

在此示例中,将使用large 字体大小关键字的段落包装到<div>元素中:

/**
* Wrap all core/paragraph blocks with large font size in a <div>.
*
* @param string $block_content The block content about to be appended.
* @param array  $block         The full block, including name and attributes.
* @return string Modified block content.
*/
function wporg_large_sized_paragraph_block_wrapper( $block_content, $block ) {
    if ( isset( $block['attrs']['fontSize'] ) && 'large' === $block['attrs']['fontSize'] ) {
        $block_content = '<div class="my-large-paragraph">' . $block_content . '</div>';
    }
    return $block_content;
}
add_filter( 'render_block_core/paragraph', 'wporg_large_sized_paragraph_block_wrapper', 10, 2 );
输出结果:

<div class="my-large-paragraph">
    <p class="has-large-font-size">
        <!-- block content -->
    </p>
</div>

想了解更多,请访问齐创互联,需要网站建设,浏览快速建站模板快速建站
点击在线客服联系客服,联系电话:15811653920 联系人: 丁生.


感谢您关注我们,如果您有建站需求,请与我们取得联系。
扫一扫上面的二维码图案,加我微信
扫一扫上面的二维码图案,加我微信
咨询直线:15811653920 丁生

建站模板

Web Templates

建站龙头,低价保证,贴心服务

权威认证建站龙头企业,合理定价,实现与客户的长期合作,30万家企业级用户优选!