这个小功能应该是非常常见的了,特别是在一些图片展示站,向用户展示每篇文章内图片的数量是很有必要的。
另外,又因为现在用手机浏览的人越来越多,如果用户在移动数据的情况下不小心点进一篇图片特别多的文章…..
这个功能实现起来也非常简单,只需要使用正则匹配一下文章内容中所有 img 标签即可,匹配成功后直接返回图片的数量,然后将图片数量展示在文章列表即可。
直接上代码先,将以下代码插入 functions.php 中:
/** * WordPress获取文章内图片的数量及文章中第一张图片的地址 - 龙笑天下 * https://www.ilxtx.com/wordpress-post-images-numbers.html */ function lxtx_post_images_nums($postid=0,$which=0){ $content = get_post($postid)->post_content; preg_match_all('/<img.*?(?: |\t|\r|\n)?src=['"]?(.+?)['"]?(?:(?: |\t|\r|\n)+.*?)?>/sim', $content, $strResult, PREG_PATTERN_ORDER); if( $which==0 ){ $output = ( $strResult && isset($strResult[1]) )?count($strResult[1]):0; }else if( $which==1 ){ // 没图时返回默认图片 $img_url = get_stylesheet_directory_uri().'/images/default.jpg'; // 没图时返回随机图片,则取消下面2行注释,并在主题根目录images中创建random文件夹,再在random文件夹中放置10张jpg格式的图片且命名为1、2、...、10 // $random = mt_rand(1, 10); // $img_url = get_stylesheet_directory_uri().'/images/random/'.$random.'.jpg'; $output = ( $strResult && !empty($strResult[1]) && !empty($strResult[1][0]) ) ? $strResult[1][0] : $img_url; } return $output; }
---- 改自君子不器
调用方法也很简单,如下,传入文章 ID,然后该函数将返回改篇文章内的图片总数,最后在相关位置展示即可:
<?php echo lxtx_post_images_nums($post->ID); ?>
当然,也可以获取某篇文章中第一张图片(支持外链图片)的链接地址;若文章中不存在图片的话,则返回一张默认图片地址或随机图片地址,调用方法如下:
<?php echo lxtx_post_images_nums($post->ID,1); ?>
最后值得指出的是本代码还可以继续延伸,用于获取文章中所有图片的链接地址,自行动手改造吧,骚年!至于这个有啥作用,就自己思考了~