wp_get_attachment_image_src获取不到文章附件?

1个月前 φ合肥 24

今天无意打开博客相册,发现最近文章里的图片没有获取到,仅是最近一篇文章里的,所以我猜是那篇文章的问题。我依稀记得当时是先上传图片到媒体库,然后插入到文章里的。难道这还有区别?果然,我发现了不一样。

这就过分了。所以说需要数据库支持的相册就是很麻烦。我不能一个个删掉再重新上传吧。那只能修改数据库咯。

查找数据库

媒体和文章一样,都在wp_posts表里,sql查询可得:

Select * from wp_posts where post_type = 'attachment';

最多显示500条,你可以导出来看,我就是这么干的,然后用文本编辑器打开都能看。

经过对比,可以看出在post_parent字段,就是显示图片插到哪篇文章ID下,如果显示为0,那说明只是在媒体库里,不在文章中显示,这样wp_get_attachment_image_src也就获取不了。

修改数据库

知道原因了就好修改了,一种方法是直接在phpmyadmin下用上面的查询代码找出来,一个个修改;一种可以用sql语句批量修改。但修改前,必须得备份数据库,数据无价。

sql语句:

UPDATE `wp_posts` SET `post_parent` = '文章ID' WHERE `wp_posts`.`ID` BETWEEN 文章ID起始 AND 文章ID结束 AND `wp_posts`.`post_parent` = 0;

其他问题

但是改了之后,相册是正常了,wp_get_attachment_image_src函数也能获取了,但是查看媒体库里的照片时,还是没有显示上传至哪篇文章下,如第一张图片。

另外在wp_postmeta表里找到相应的缩略图信息,可以用sql筛选一下:

 SELECT * FROM  `wp_postmeta` WHERE meta_key IN ('_wp_attached_file', '_wp_attachment_backup_sizes',  '_wp_attachment_metadata',  '_thumbnail_id')

貌似没找到相应的设置字段。知道的童鞋麻烦告知一下,不过到此问题是解决了,虽然不是很完美。通过sql修改数据,不是经常干,稳妥一些,切记一定要先备份数据库,切记!!!

参考文章:

①https://cloud.tencent.com/developer/information/mysql%E4%BF%AE%E6%94%B9%E5%AD%97%E6%AE%B5%E5%80%BC

②https://doc.weixiaoduo.com/wordpress/4468.html

24 条评论

  1. #1

    我本来以为上传到wp里面的图片好处理。后来发现不好处理。数据库搜索的不全,不知道为啥,我又经常换域名。导致好多图都有问题。我也不管了。看看图床是不是好处理。我继续观察。

    • @acevs 一般情况下,不会去大修大改的,出现这种情况,也是少数了。
      经常换域名的,也可以用sql语句更新域名的。

      • @皇家元林 还有第三方发布工具也会导致图片链接问题。之前也用过不少第三方的。如果没有话估计好处理一点。

  2. #2

    媒体库与文章中上传有些区别,文章中上传会建立附属关系。

  3. #3

    wp的附件处理的确很麻烦

    • @obaby 是的,其实我就想原图上传,可他偏偏给我弄个缩略图。关了都不行。
      另外,你的站好像挂了。。。

  4. #4

    WP越来越臃肿

    • @krwater 是的,不过确实很强大。只是简单写个博客,确实不用那么强大。

  5. #5

    ty的文件管理更是个迷,所以我自建了图床。

    • @网友小宋 好像MD编辑器都是用图床的吧。其实直接吧图片丢到一个文件夹里,给他绑个域名就是图床了。

  6. #6

    你这条update语句有风险。一是应该加上post_type = ‘attachment’,另外还要加一个post_mime_type = ‘image/jpeg’。因为图片是文章附件,但文章附件不一定是图片。
    编辑post_meta的办法是调用add_meta_box,自己画一个编辑框.重点是实现第三个参的回调函数。1)用get_post_meta把想要的内容取出来。2)画一个input和一个button。3)把取出来的东西放到edit里。4)写js或者用wp自带的方法实现提交功能。
    我记得好像有现成的编辑任意metakey的例子。不然我从哪抄的。

    • @大致 额…加上应该也可以,只是我这个 update 条件是数据库 id 区间之间的,数据库 id 应该是唯一的,对,草率了,我写成了文章 id 了,这些图片附件不在文章里,何来文章 id。
      另外你说的 post_meta 是说的我这个图片归属问题吗?我有点没看懂。

      • @皇家元林 你不是想在wp_postmeta里进行修改吗?还是我理解错了,你是想找attach图片与主post的那条关系?

        • @大致 其实我不知道在哪改,猜测是在 postmata 里。看到文章第一张图片标红的位置没,在第二张图片就没有,即使改了归属文章,也没有。

    • @大致 你这个 ip 地址是奥克兰的,是人在那边,还是用了代理?

      • @皇家元林 是代理。凡是有IP归属地显示的博客,我都挂代理留言。以那个傻叉省份为耻。不过你这里是直接到城市就没关系,等我哪天想起来给你单独建个分类吧。

        • @大致 不用不用,我只是好奇。反正这个归属地也不准确,无所谓的。

  7. #7

    就是_thumbnail_id啊。

  8. #8

    挺深奥的,没有学习到这个。