wordpress如何调用单篇文章里面的所有附件图片?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wordpress如何调用单篇文章里面的所有附件图片?相关的知识,希望对你有一定的参考价值。

注意:所有图片均是通过后台上传到媒体库中的附件。

是获取一篇文章中的所有图片附件吗?

看这段代码

//从文章中搜索图片并获取图片
$SoImages  = ‘~<img [^\\>]*\\ />~’;
preg_match_all($SoImages,$post->post_content,$Images);
$PictureAmount=count($Images[0]); //获取图片数量//处理所有的图片
for($i=0;$i<$PictureAmount;$i++)
echo $Images[0][$i]  //处理图片,语句可以自定义,第一张图片为$Images[0][0];

//通过使用switch控制语句处理第一张图片,也可以使用if…else…elseif语句来实现,具体逻辑请自定义
switch($PictureAmount>0)
case 1:
  echo $Images[0][0]; //输出第一张图片
  break;
default:
  $ImagesUrl=bloginfo(‘stylesheet_directory’).”/images/1.jpg”; //当文章无图片时默认输出的图片

/*获得文章中的图片链接路径的代码
*首先使用上面第一段的语句从文章搜索并获取图片
*然后通过运行正则表达式来分析图片代码,然后得到匹配的字符
*以下只列出其中的一种正则表达式代码,有兴趣的童鞋可以自己编写
*/
//获取一张图片,例如获取第一张图片$Images[0][0],其代码样例为:<img alt=”Google” 
title=”Google” id=”logo” src=”/intl/zh-CN/images/logo_cn.gif” 
width=”276″ height=”110″ border=”0″  />
$ImgUrl = $Images[0][0];
$SoImgAddress=”/\\<img.*?src\\=\\”(.*?)\\”[^>]*>/i”;  //正则表达式语句
preg_match($SoImgAddress,$ImgUrl,$imagesurl);  //分析
echo $imagesurl[1]; //得到并处理路径:/intl/zh-CN/images/logo_cn.gif

这不是我自己写的,是在一篇博客里看见的,贴了过来

//补充一下,$post->post_content就是文章内容了

追问

可以应用到image.php里面吗?

参考技术A

一个文章的所有附件,是通过POSTS数据表中的post_parent挂钩的,以及post_type为attachment来标识的。

理解这句后,查看下面这段代码:

        /* 获取指定post下的所有图片附件. */
        $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读出附件的相关信息即可。

追问

比如我的主题是有image.php这个文件。点击一篇文章中的图片即single.php模版进入image.php模版。如何实现image.php调用与之对应的跳转过来的那篇文章的附件图片。之前也有个人也是用get_children教我的。结果进入image.php调用的是之前跳转的那篇文章,所在的分类的所有文章的附件图片。也就是调用了整个分类下的附件。

追答

那可能是没有正确获取当前附件所属的父级日志的ID造成的。

在image.php中,通过get_queried_object_id()获取当前附件的ID

再用wp_get_post_parent_id( $ID )来获取当前附件所属的日志ID。

最后用get_children来获取日志下的所有附件即可。

image.php中的大致代码如下:(不要放在循环内)

$current_image_id = get_queried_object_id();
$parent_id = wp_get_post_parent_id( $current_image_id );
        /* 获取指定post下的所有图片附件. */
        $attachments = get_children(
            array(
                'post_parent'      => (array)$parent_id,
                'post_status'      => 'inherit',
                'post_type'        => 'attachment',
                'post_mime_type'   => 'image',
                'order'            => 'ASC',
                'orderby'          => 'menu_order ID',
                'suppress_filters' => true
            )
        );
    if ( count( $attachments ) ) 
        foreach( .... )
    

本回答被提问者采纳
参考技术B 添加媒体里面 在媒体库选择图片就可以追问

你说的是上传图片到媒体库然后选择图片添加到文章。
我的意思是调用图片,通过 函数代码调用单一一篇文章中所有附件图片到另外的页面。

以上是关于wordpress如何调用单篇文章里面的所有附件图片?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JQuery.ajax 从每个 WordPress 帖子中获取缩略图附件?

WordPress如何获取文章里面全部图片或者前几张图片

如何将WordPress远程附件存储到腾讯云对象存COS上

wordpress调用自定义post_type文章

WordPress 使用工作缩略图重命名附件文件

wordpress多作者显示问题