WordPress 获取文章中所有图片的几种方法

WordPress 获取文章中所有图片的几种方法

做 WordPress 主题开发的时候,遇到一个需求就是在文章列表页显示一篇文章的多图列表样式(如下图截自本站点的问答列表页的这个样式),之前曾经使用自定义字段的方式实现过这个功能,但是需要手动去上传要显示的多图,后期内容管理的时候相对比较麻烦,所以想着如果能让程序自动获取到当前文章中的所有图片路径,然后在文章列表页按照需要设置最多显示几张就可以了,这样在内容管理的时候会方便很多。

许多站长有希望增加文章相册的功能,来优化用户体验的想法,其实实现起来很简单,只不过主要是需要用到 css+javascript 的运用,然后再结合 wordpress 本身的函数来实现 wordpress 如何获取文章中所有图片的方法。

方法一

下面来讲一下获取文章所有图片的方法,很简单不多说了直接上代码,把下面代码放到你主题的 functions.php 中。

/**
*获取当前文章中所有图片 
*/
function mx_get_post_images(){
    global $post;
    ob_start();
    ob_end_clean();
    $output = preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $post->post_content, $matches, PREG_PATTERN_ORDER);
    return $matches[1];
}

然后再你需要使用图片 url 的地方使用 mx_get_post_images()这个函数获取出来,然后循环输出成你需要的样式就行了。

调用 wordpress 文章中的所有图片附件,这种需求,一般情况下,我们可能不需要。但是,在特殊情况下,我们可能会要用到它,比如有的 wordpress 图片主题中,让同一篇文章下的图片以幻灯的形势来展示,这时,我们就可能需要调用到所有的文章图片。

方法二

思路如下:WordPress 文章所有附件,都是通过 POSTS 数据表中的 post_parent 挂钩的,以及 post_type 为 attachment 来标识的;图片附件的 post_mime_type 为’image’。理解这句后,查看下面这段代码:

$attachments = get_children(
array(
'post_parent' => 文章的ID,
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID',
'suppress_filters' => true
)
);

然后,我们通过 foreach 主语句来循环读出附件的相关信息就可以实现我们想要的效果。

温馨提示:本文最后更新于2022-05-12 19:46:59,某些文章具有时效性,若有错误或已失效,请在下方留言或联系乡野博文
您阅读这篇文章共花了: 0小时00分00秒
-----本页内容已结束,喜欢请分享!-----
© 版权声明
THE END
喜欢本站内容,请点【点赞】【分享】和【收藏】~
点赞9 分享
评论 抢沙发

请登录后发表评论