国内外主机
测评及优惠码

WordPress: 如何调用单篇文章内的所有图片附件?

WordPress如何调用单篇文章里面的所有附件图片
注意:所有图片均是通过后台上传到媒体库中的附件。

方法如下:


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

        /* 获取指定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( .... ){}         }

这只是WordPress中有关附件的冰山一角,仍有很多未知领域需要继续探索,期望更多朋友参与讨论或分享您的收获,谢谢。

赞一个
赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《WordPress: 如何调用单篇文章内的所有图片附件?》
文章链接:https://www.ibytx.com/1350.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。