这个小功能应该是非常常见的了,特别是在一些图片展示站,向用户展示每篇文章内图片的数量是很有必要的。
另外,又因为现在用手机浏览的人越来越多,如果用户在移动数据的情况下不小心点进一篇图片特别多的文章…..
这个功能实现起来也非常简单,只需要使用正则匹配一下文章内容中所有 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); ?>
最后值得指出的是本代码还可以继续延伸,用于获取文章中所有图片的链接地址,自行动手改造吧,骚年!至于这个有啥作用,就自己思考了~
还没有人赞赏,快来当第一个赞赏的人吧!
声明:本文为原创文章,版权归龙笑天下所有,欢迎分享本文,转载请保留出处!