diff --git a/functions.php b/functions.php
index dba2be4..e272b2a 100644
--- a/functions.php
+++ b/functions.php
@@ -188,45 +188,44 @@ class ImageStructureProcessor {
if ($widget instanceof Widget_Archive) {
try {
// 使用 DOM 操作确保结构完整性
- $dom = new DOMDocument('1.0', 'UTF-8');
+ $dom = new DOMDocument('1.0', 'UTF-8');
// 添加错误处理
- libxml_use_internal_errors(true);
+ libxml_use_internal_errors(true);
// 添加基础 HTML 结构以确保正确解析
- $content = '
' . $content . '
';
- // 转换编码并加载内容
- $content = mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8');
+ $content = '' . $content . '
';
+ // 直接加载内容到 DOM
$dom->loadHTML($content,
LIBXML_HTML_NOIMPLIED |
LIBXML_HTML_NODEFDTD |
LIBXML_NOERROR |
LIBXML_NOWARNING
);
- $xpath = new DOMXPath($dom);
- // 查找所有没有父 figure 的图片,排除SVG
- $images = $xpath->query("//img[not(ancestor::figure) and not(contains(@src, '.svg'))]");
+ $xpath = new DOMXPath($dom);
+ // 查找所有没有父 figure 的图片,排除 SVG
+ $images = $xpath->query("//img[not(ancestor::figure) and not(contains(@src, '.svg'))]");
if ($images->length > 0) {
foreach ($images as $img) {
// 获取必要的属性
$src = $img->getAttribute('src');
- $alt = $img->getAttribute('alt');
- // 跳过没有src的图片或SVG格式的图片
+ $alt = $img->getAttribute('alt');
+ // 跳过没有 src 的图片或 SVG 格式的图片
if (empty($src) || stripos($src, '.svg') !== false) {
continue;
}
// 创建容器元素
$figure = $dom->createElement('figure');
- $figure->setAttribute('class', 'grap--figure');
- // 创建链接元素用于lightbox
+ $figure->setAttribute('class', 'grap--figure');
+ // 创建链接元素用于 lightbox
$link = $dom->createElement('a');
$link->setAttribute('href', $src);
$link->setAttribute('data-lightbox', 'image-set');
$link->setAttribute('data-title', $alt);
- $link->setAttribute('class', 'no-style-link');
+ $link->setAttribute('class', 'no-style-link');
// 只有在有 alt 属性时才创建 figcaption
if (!empty($alt)) {
$caption = $dom->createElement('figcaption', $alt);
$caption->setAttribute('class', 'imageCaption');
- }
+ }
// 重组 DOM 结构
if ($img->parentNode) {
$img->parentNode->replaceChild($figure, $img);
@@ -237,19 +236,21 @@ class ImageStructureProcessor {
}
}
}
- }
+ }
// 获取处理后的内容
- $content = $dom->saveHTML();
+ $content = $dom->saveHTML();
+ // 提取 body 部分的内容
+ $content = preg_replace('/^.*(.*)<\/body>.*$/is', '$1', $content);
// 清理临时添加的 div 标签
- $content = preg_replace('/^|<\/div>$/i', '', $content);
+ $content = preg_replace('/^
|<\/div>$/i', '', $content);
// 清理 libxml 错误
- libxml_clear_errors();
+ libxml_clear_errors();
} catch (Exception $e) {
// 记录错误但返回原始内容
error_log('Image processing error: ' . $e->getMessage());
return $content;
}
- }
+ }
return $content;
}
}