最近悟空搜在我们QQ教程群里看到有一位伙伴一直在问如何调用文章内的多张图片作为文章缩略图,但一直没人回复。
悟空搜本着助人为乐的精神帮他搜索了一下,发现网上相关的WordPress教程大多已经过期无法使用。经过悟空搜的研究,终于找到一种成功调用文章多张缩略图的方法。其实也很简单,只需将网上错误的教程稍作修改即可。
实现代码
将以下PHP函数添加到你的主题的 functions.php 文件中:
/**
* WordPress调用多张文章图片作为缩略图
* 悟空搜(ztJun.com)整理
*/
function preview_img($soContent) {
// 正则表达式匹配文章内容中的所有img标签
$soImages = '/<img[^>]+/?>/i';
preg_match_all($soImages, $soContent, $thePics);
$allPics = count($thePics[0]);
if ($allPics > 0) {
$count = 0;
$max_images = 5; // 设置最大显示图片数量,可自行调整
foreach ($thePics[0] as $v) {
if ($count >= $max_images) {
break;
}
// 输出图片,可添加自定义CSS类进行样式控制
echo '<span class="preview-img">' . $v . '</span>';
$count++;
}
}
}
代码说明与修正:
- 修正了正则表达式:原正则表达式
~<img [^>]* />~存在错误且不完整。已修正为更健壮和标准的/<img[^>]+/?>/i,它能匹配各种格式的<img>标签(包括自闭合和非自闭合)。 - 修正了变量引用:
count($thePics)返回的是匹配数组的数量(通常是1),而不是图片数量。正确的图片数量应为count($thePics[0])。 - 优化了逻辑:将最大图片数量定义为变量
$max_images,使代码更清晰、更易维护。 - 添加了注释:解释了关键步骤,便于理解。
使用教程
- 将上面修正后的代码复制并粘贴到你当前WordPress主题的
functions.php文件末尾。 - 在你需要显示多张缩略图的地方(例如文章列表循环
while (have_posts())内部),使用以下代码调用函数:
<?php preview_img(get_the_content()); ?>
重要提示:
- 建议使用
get_the_content()替代直接访问$post->post_content,以确保兼容性和安全性。 - 输出的图片会包裹在
<span class="preview-img">标签内。你需要在主题的CSS文件(如style.css)中为.preview-img类添加样式(例如设置宽度、浮动、边距等)来控制缩略图的布局和外观。 - 此方法直接从文章内容中提取 所有
<img>标签。如果文章内容中包含来自外部图床或特殊格式的图片,可能需要调整正则表达式。 - 在修改主题文件前,建议先创建子主题或进行备份。