#TIL: "meta charset=utf-8"导致MathJax不渲染

WARNING: This article may be obsolete
This post was published in 2021-09-16. Obviously, expired content is less useful to users if it has already pasted its expiration date.

有的时候你会发现你的一篇Wordpress文章莫名其妙有一两个MathJax公式就是无法渲染,但是在古腾堡的可视化编辑器里,看起来一切都很正常。比如下面这个例子:

这个公式看起来没有任何问题,但MathJax就是不去渲染它

其实这个公式在wordpress数据库里存储成了下图这个样子,但是它不会被Gutenberg的默认编辑器显示出来,只有切换到 Edit as HTML 模式才能发现其中的猫腻:

如果你很喜欢在Wordpress gutenberg编辑器里到处复制粘贴MathJax公式,那么有很大概率粘上这段代码,导致MathJax莫名其妙就是不渲染。

这可能是一个组合了macOS + Chromium + Gutenbery才诞生的奇妙bug,我搜索了我的文章,只有最近的(大体上就是更新了Wordpress 5.8.1以后的)文章才存在这串字符,具体可以见这个issue:🔗 [A meta tag is inserted when copy pasting a link · Issue #33585 · WordPress/gutenberg] https://github.com/WordPress/gutenberg/issues/33585

事实上,不仅仅是MathJax,还有很多wordpress组件(比如各种shortcode)会被这串字符影响。可以定期使用Search Regex – WordPress plugin | WordPress.org在整个 wp_posts 表里查找并移除这串字符。

或者根据#33585 issue的讨论内容,如果你觉得mysql全局替换风险有点大,你也可以使用这个php snippet进行内容过滤:

<?php
add_filter( 'the_content', fn($content) => preg_replace('#</?meta(\s[^>]*)?>#i', '', $content) );

 Last Modified in 2022-09-28 

Leave a Comment Anonymous comment is allowed / 允许匿名评论