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

2017-07-14 10:10 2,004 34 条评论 龙笑天下

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); ?>

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

「点点赞赏,手留余香」

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

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

2017-06-28

2017-08-10

发表评论

表情 格式 贴图 链接 私密 签到
评论
正在努力加载中...
扫一扫二维码分享
×