而不是使用get_post_gallery_images()
和attachment_url_to_postid()
, 你可以使用get_post_gallery()
当第二个参数为false
, 为您提供一个包含两个项目/键的数组:1)src
—图像URL数组,以及2)ids
—附件ID(逗号分隔)。
所以你可以$images_gallery = get_post_gallery( $section_content, false );
然后:
<div class="swiper-container post-slider" style="height:300px;">
<div class="swiper-wrapper">
<?php if ( $images_gallery ) :
$ids = wp_parse_id_list( $images_gallery[\'ids\'] );
foreach ( $images_gallery[\'src\'] as $i => $image ) :
$image_id = $ids[ $i ];
//get the image "post" information
$attached_image = get_post( $image_id );
// $image contains the image URL for the specified image size (e.g. \'large\'),
// but you can really use functions like wp_get_attachment_image_src() to get
// a different image URL.
// ... your code.
?>
... your HTML
<?php
endforeach;
endif; ?>
</div>
<div class="swiper-scrollbar"></div>
</div>
更新
因此,作为对您评论的回复:
我想了解为什么WordPress只会将图像大小附加到某些图像的链接中。
因为有些图像(在维度上)比那些没有附加图像大小的图像大也就是说,当您上传图像时,WordPress会根据您网站中定义的每种图像大小制作一份图像大小调整后的副本&mdash;默认大小为缩略图(150px x 150px
), 中等(300px x 300px
) 和大型(1024px x 1024px
) 正如您在“媒体设置”页面(设置媒体)上看到的那样。每个图像副本的名称都在末尾附加了维度(<original name>-<resized width>x<resized height>.<ext>
) 就像my-image-1024x683.jpg
.
例如,如果您上载了一个维度为620px
(宽度)&次;430px
(高度),则WordPress只会创建两个调整大小的图像,一个用于缩略图大小,另一个用于中等大小。WordPress不会创建“大”图像,因为original image 小于“大”尺寸。
如果你把[gallery ids="1,2,3" size="large" /]
在您的帖子内容中,其中一幅图像是上面的示例图像(620px x 430px
), WordPress会尝试查找每个画廊图像的“大”图像URL,如果找不到,则查找原始图像URL(例如。my-image.jpg
) 将使用。
在问题中,您问:
据我所知,要获取ID,需要一个如下URL:
http://myasite.com/wp-content/uploads/2020/03/my-image.jpg
. 有解决方案吗?
是的,您需要原始图像URL或相对于uploads
文件夹这是因为WordPress将路径保存在名为_wp_attached_file
, 和attachment_url_to_postid()
将运行如下SQL命令:
SELECT post_id FROM wp_postmeta
WHERE meta_key = \'_wp_attached_file\'
AND meta_value = \'2020/03/my-image.jpg\'
但是关于“有修复方法吗?”,没有,这里没有什么可修复的。但是,如果您想创建自己的函数,从调整大小的图像URL获取附件ID,那么这取决于您自己。
但是,如果您只想检索post gallery中图像的ID(短代码),那么正如我前面提到的,使用get_post_gallery()
. 这很简单。:)