wordpress 过滤古藤堡的块内容

wordpress的古藤堡编辑器已经非常流行。 这个小站也是使用古藤堡编辑器,编辑文章的时候,因为需要经常添加代码。添加代码后对代码块,需要添加一个额外的css类,用来语法高亮。

wordpress 古藤堡添加类

这个操作还是比较繁琐的,不论什么语言都要添加 language-

解决方法 使用 render_block 钩子

add_filter('render_block', function ($blockContent, $block) {

    if ($block['blockName'] === 'core/code') {
        $pattern = '#class="(.*?)"#i';

        return preg_replace_callback($pattern, function($match) {
            $class = str_replace(
                array(" php", " html", " css", " js"),
                array(" php language-php", " html language-html", " css language-css", " js language-js" ),
                $match[1]);

            return 'class="'  .  $class . '"';
        }, $blockContent, 1);
    }

    return $blockContent;
}, 10, 2);

代码做了什么,其实就是简写。 如果类中添加 php 就替换成 php language-php 。前面特意加了一个空格。