WordPress 默认没有提供统计文章内图片数量的函数,因此需要自行添加代码来实现此功能。
这个功能实现起来并不复杂,几行代码即可完成。网上也有不少类似的教程可供参考。
虽然是一个小功能,但可以丰富主题的特性,感兴趣的朋友可以自行测试。
使用方法
首先,将以下代码添加到主题的 functions.php 文件中。
// WordPress 获取文章内图片数量
if ( ! function_exists( 'get_post_images_number' ) ) {
function get_post_images_number() {
global $post;
$content = $post->post_content;
preg_match_all( '/<img.*?(?: |t|r|n)?src=['"](.+?)['"]/i', $content, $result, PREG_PATTERN_ORDER );
return count( $result[1] );
}
}
然后,在需要显示图片数量的地方(例如文章模板中)添加以下调用代码。
注意: 此代码需要放在 WordPress 主循环(The Loop)内部,以确保 $post 对象可用。
<?php echo get_post_images_number() . '张图片'; ?>
代码说明与优化
原正则表达式较为复杂且存在潜在问题。上述代码已进行优化:
- 简化了正则表达式,使其更专注于匹配
src属性值。 - 移除了
/sim中的s修饰符(点号匹配所有字符),因为匹配img标签通常不需要。 - 使用更标准的单引号转义方式
['"]。
如果需要更精确地匹配 WordPress 媒体库插入的图片(可能包含 data-src 等属性),可以考虑使用 get_media_embedded_in_content() 函数,但上述代码对于统计普通 <img> 标签已足够。