从wp_get_attachment_image中删除src

时间:2016-03-07 21:11:08

标签: wordpress lazy-loading

我正在尝试使用以下代码延迟加载正在检索的图像:

<?php $args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'posts_per_page' => -1,
'orderby'=> 'menu_order',
'order'=>'ASC', 
'post_parent' => $post->ID,
);
$images = get_posts( $args );
foreach($images as $image):
echo wp_get_attachment_image($image->ID, 'large');
endforeach;
?>

为了使用延迟加载器,我需要使用以下代码向img添加data-src属性:

function alter_att_attributes_wpse_102079($attr) {
$attr['data-original'] = $attr['src'];
return $attr;
}
add_filter( 'wp_get_attachment_image_attributes',
'alter_att_attributes_wpse_102079');

但这很有效,即使图像不在视口中,图像仍然被加载,这是因为src标签仍然在我认为的图像上。

有没有办法删除src或者用data-original替换它?

1 个答案:

答案 0 :(得分:0)

您可以改用wp_get_attachment_image_src。它返回图像数据而不回显它,使构建标记变得更容易。

这将是这样的:

foreach($images as $image):
    $img = wp_get_attachment_image_src($image->ID, 'large');
    echo '<img src="" data-original="'.$img[0].'" width="'.$img[1].'" height="'.$img[2].'" >';
endforeach;

希望它有所帮助!