diff --git a/footer.php b/footer.php index f6278b7..afdf9f3 100644 --- a/footer.php +++ b/footer.php @@ -235,9 +235,19 @@ let pre = element.parentElement; - // 获取代码内容,保留换行符 + // 优先从 data-mermaid-code 属性获取代码 - let code = getTextWithLineBreaks(element); + let code = element.getAttribute('data-mermaid-code'); + + + + // 如果没有 data 属性,尝试从内容获取 + + if (!code) { + + code = getTextWithLineBreaks(element); + + } // 去除首尾空白 @@ -277,6 +287,8 @@ console.log('Contains newlines:', code.indexOf('\n') !== -1); + console.log('First 200 chars:', code.substring(0, 200)); + // 创建 Mermaid 容器 let mermaidDiv = document.createElement('div'); diff --git a/functions.php b/functions.php index 6472556..1246934 100644 --- a/functions.php +++ b/functions.php @@ -3577,8 +3577,15 @@ function the_content_filter($content){ $code = html_entity_decode($code, ENT_QUOTES | ENT_HTML5, 'UTF-8'); // 去除首尾空白 $code = trim($code); - // 返回带换行符的代码块 - return '
' . htmlspecialchars($code, ENT_QUOTES, 'UTF-8') . '
'; + // 如果没有换行符,尝试恢复(WordPress 可能把换行符转换成了空格) + // 检测常见的 Mermaid 关键字后应该有换行 + $keywords = ['flowchart', 'graph', 'sequenceDiagram', 'classDiagram', 'stateDiagram', 'erDiagram', 'journey', 'gantt', 'pie']; + foreach ($keywords as $keyword) { + // 匹配关键字后跟方向(TD/LR等)或其他内容,但没有换行符的情况 + $code = preg_replace('/(' . preg_quote($keyword, '/') . '\s+(?:TD|LR|RL|BT|TB))\s+(?![\r\n])/', "$1\n", $code); + } + // 返回带换行符的代码块,使用 data 属性存储原始代码 + return '
' . esc_html($code) . '
'; }, $content );