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

有一段时间经常碰到wordpress的图片附件问题;这里借用我在百度知道里的回答,做一节选:

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

http://zhidao.baidu.com/question/1987634611453390707.html?oldq=1

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

方法如下:


原理:一个文章的所有附件,是通过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( .... ){}
        }

这是无意间看到的一个方法不错,学习了!http://www.52fengjiao.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值