Hoy hemos cambiado el plugin para mostrar el código de programación en la web «Crayon Syntax Highlighter» por «Enlighter – Customizable Syntax Highlighter».
Después de esperar a ver si actualizaban Crayon, al final hemos decidido reemplazarlo. Las razones: No tiene compatibilidad con Gutenberg y no funciona con PHP 7.3.x. Sobre todo esto último es lo que nos ha hecho cambiar.
¿Cómo mantener el código de Crayon con Enlighter?
Y surge la pregunta ¿cómo podemos cambiar el plugin sin editar cada uno de los posts?
En Github hay un hilo del tema: Crayon Compatibility Mode #136 que da una solución que es la que hemos usado. Por otro lado destacar que en la versión 4 de Enlighter que ahora está en beta, habrá un modo de compatibilidad con Crayon para no tener que hacer estas modificaciones que aquí os describimos.
Añadiendo este código al functions.php del child theme, automáticamente convertirá el código de Crayon a Enlighter:
add_filter('the_content', function($content){ // crayon filter regex $regex = // opening tag, language identifier (optional) '/<pre\s+class="lang:([a-z]+?)([^"]*)"\s*>' . // case insensitive, multiline '/im'; // apply filter regex return preg_replace_callback($regex, function($match){ return '<pre class="EnlighterJSRAW" data-enlighter-language="' . esc_attr($match[1]) . '">'; }, $content); }, 1);
Fácil y rápido.