龙笑天龙笑天  2017-07-14 10:10 龙笑天下 隐藏边栏 |   34 条评论  1,620 
文章评分 47 次,平均分 4.9

WordPress 获取文章内图片的数量及文章中第一张图片的地址 wordpress

这个小功能应该是非常常见的了,特别是在一些图片展示站,向用户展示每篇文章内图片的数量是很有必要的。

另外,又因为现在用手机浏览的人越来越多,如果用户在移动数据的情况下不小心点进一篇图片特别多的文章…..

这个功能实现起来也非常简单,只需要使用正则匹配一下文章内容中所有 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); ?>

大家可以去本站“文章中心”的标题处看看具体效果,当然,本站是做了个判断的,图片数量少于 2 的就不显示了~

当然,也可以获取某篇文章中第一张图片(支持外链图片)的链接地址;若文章中不存在图片的话,则返回一张默认图片地址或随机图片地址,调用方法如下:

<?php echo lxtx_post_images_nums($post->ID,1); ?>

最后值得指出的是本代码还可以继续延伸,用于获取文章中所有图片的链接地址,自行动手改造吧,骚年!至于这个有啥作用,就自己思考了~

「点点赞赏,手留余香」

还没有人赞赏,快来当第一个赞赏的人吧!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

龙笑天
龙笑天 关注:32    粉丝:38 最后编辑于:2018-12-29
互助分享,互联网本该如此!

发表评论

最赞评论
  1. 橘子书
    橘子书 评论达人 LV.3 来自天朝的朋友 火狐浏览器 51.0 Windows 10 福建省漳州市 电信

    这个功能用在图片比较多的博客,蛮好的。

  2. 小萝博客 评论达人 LV.1 来自天朝的朋友 谷歌浏览器 58.0.3029.110 Windows 10 广东省珠海市 电信

    这个非常贴心,不过一般的配图比较少,是不是 [坏笑]

  3. 1
    192.168.1.1 来自天朝的朋友 谷歌浏览器 45.0.2454.101 Windows 7 北京市 联通

    第一张图片做首页缩略图最好的了。

  1. 来人啊 来自天朝的朋友 谷歌浏览器 71.0.3578.98 Windows 10 广东省深圳市 电信

    这个虽然能获取到第一张图片地址 ,但是会报错,
    报错出现在这一行:$output = ( $strResult[1][0]==null ? $img_url : $strResult[1][0]);

    13楼 2018-12-29 09:44
  2. W
    wp初学者 来自天朝的朋友 谷歌浏览器 65.0.3325.146 Windows 7 北京市 联通数据中心

    获取第二张图呢,ID,1); ?>中 1 改为 2?,但是并不好使,应该是我错了

    12楼 2018-04-26 16:30
  3. 夏日博客
    夏日博客 来自天朝的朋友 谷歌浏览器 45.0.2454.101 Windows 7 北京市朝阳区 联通

    一个 function 就解决了,WP 很强大。

    11楼 2017-07-26 10:38
扫一扫二维码分享