Syntax-highlighting Code Block (with Server-side Rendering)

Descripción

This plugin extends the Code block in WordPress core to add syntax highlighting which is rendered on the server. Pre-existing Code blocks on a site are automatically extended to include syntax highlighting. Doing server-side syntax highlighting eliminates the need to enqueue any JavaScript on the frontend (e.g. Highlight.js or Prism.js) and this ensures there is no flash of unhighlighted code (FOUC?). Reducing script on the frontend improves frontend performance and it also allows for the syntax highlighted code to appear properly in AMP pages as rendered by the official AMP plugin (see also ampproject/amp-wp#972) or when JavaScript is turned off in the browser.

In addition to not adding any JavaScript to the frontend, the stylesheets needed for styling the Code block will only be added to the page if there is a Code block present. The stylesheets are added inline when the Code block is rendered, ensuring that they do not block rendering of any content higher in the page. If stylesheets fail to load for any reason, the block simply renders without styling, with one key exception: highlighted lines are wrapped in mark elements so they’ll get highlighted regardless, including in RSS Feeds and posts syndicated in email (as long as the mark element is supported in the client).

This extended Code block uses language auto-detection to add syntax highlighting, but you can override the language in the block’s settings sidebar. (There is currently no syntax highlighting of the Code block in the editor.) The plugin supports all programming languages that highlight.php supports (being a port of highlight.js). The Code block also is extended to support specifying the aforementioned highlighted lines. There is also a checkbox for whether to show line numbers on the frontend (with the numbers being non-selectable). Lastly, given inconsistencies across themes as to whether lines in a Code block should be wrapped, this plugin adds styling to force them to no-wrap by default, with a checkbox to opt-in to wrapping when desired.

Para uso avanzado, por favor ve la wiki del plugin.

Este plugin es desarrollado en GitHub. Ve la lista de problemas actuales con el plugin. Por favor, siéntete libre de agregar cualquier otro problema o solicitud que puedas tener. Las peticiones de validación son bienvenidas.

Créditos

This is a fork of Code Syntax Block by Marcus Kazmierczak (mkaz), which is also available on WordPress.org. Copyright (c) 2018 Marcus Kazmierczak. Licensed under GPL 2.0 or later.

highlight.php es lanzado bajo la licencia BSD 3-Clause. Copyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (autor original). Copyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php

Capturas

  • Los bloques de código se pueden agregar del modo usual, anulando opcionalmente el idioma auto-detectado. También especifica cualquier línea que deba ser destacada, si se deben mostrar los números de las línea, y que líneas deben ser cerradas.
  • The Code block renders with syntax highlighting on the frontend without any JavaScript enqueued. Stylesheets are added only when block is on the page.

Reseñas

13 de julio de 2022
I confess, I've been a happy user of Code Syntax Block for quite a while — a plugin which the author, Weston Router, clearly states that Syntax Highlighting (Code Block) is based upon. Alas, however, all the pages I had with the older plugin would suffer from an inevitable rendering slowdown — there is so much Javascript on web pages these days that such a slowdown is inevitable, and this is especially true to those scripts that attempt to recognise the language automatically — something that will consume plenty of CPU cycles on the browser. Parsing the language is also no mean feature by itself (I know, I've been doing some experiments for some code editors, and, believe me, it's tough!). So why force the end-user to bear the burden of all that work? It makes much more sense to pre-render everything on the server, and then let the web server send the already-parsed HTML from its cache. That way, the end-user will already have everything on their browser, no need to wait for parsing! Also, if you 'forget' to set the language that your code is in (it happens...), the auto-detecting feature will only run on the server, and just once, when you save the post you're writing. Even if it takes a fraction of a second more to save, think of how much time all those users will save when they get the already-rendered page! So, this plugin is definitely recommended. As a bonus: if you are already using some sort of code block on your WP setup, once you turn off whatever plugin you were using, Syntax Highlighting (Code Block) will immediately pick it up and start its magic (you might need to open and save all the pages you've got code on, though — I'm not quite sure if that's really the case). That means zero effort (beyond saving) — what you already had will continue to work. And, naturally enough, when you disable this plugin, your code block will just revert to the internal WP code block instead — nothing will be 'lost' that way! If you're still hesitant and reading this to the end... while you wasted your time here, think of how many of your users would have saved their time if you already had this plugin installed 🙂
19 de abril de 2022
No agrega bloques nuevos a WordPress, ya que potencia el bloque de código existente. Soporta gran cantidad de Lenguajes, puedes mostrar líneas y marcar ciertas partes del código. ¡Vaya todo lo que necesito! Y no hay que configurar nada!
21 de enero de 2022
Just found this gem of a plugin when looking for code syntax highlighting plugins. No hassle at all to get working, just install and activate and it formats and styles existing code blocks in posts. Could not be happier with this plugin. Wlldone!
19 de noviembre de 2021
I've switched to "Syntax-highlighting Code Block" from a similar plugin, mainly because the old one didn't recognize the new Java Text Blocks. This one does, and GTMetrix also reports a heavily reduced DOM size for almost all my pages, for example: from 2,363 elements down to 1,654 elements from 1,842 elements down to 1,442 elements That's an amazing and surprising improvement! I do have one feature request, though: It would be great if one could select a subset of the available languages for the dropdown, so you don't always have to scroll through all 185 languages.
7 de junio de 2021
Hi, I just wanted to stop by to say thanks for such a great plugin. It does the job perfectly for me. The way you have used CSS allows me to customise the different colours etc for different components and I have even got a dark mode version working (with prefers darkmode CSS). I really hope you are able to keep this project maintained. Cheers Colin
Leer todas las 22 reseñas

Colaboradores y desarrolladores

Este software es de código abierto. Las siguientes personas han contribuido a este plugin.

Colaboradores

"Syntax-highlighting Code Block (with Server-side Rendering)" ha sido traducido a 8 idiomas locales. Gracias a los traductores por sus contribuciones.

Traduce "Syntax-highlighting Code Block (with Server-side Rendering)" a tu idioma.

¿Interesado en el desarrollo?

Revisa el código, echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

Para la bitácora de cambios del plugin, por favor, consulta la página de versiones en GitHub.