Adiós «Crayon Syntax Highlighter». Hola «Enlighter»

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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.