2015-01-07 82 views
1

根據jQuery.lazyload我想要「lazyload」的任何圖像需要將src屬性替換爲data-original修改WordPress的get_image_tag輸出?

我假設我可以使用WordPress get_image_tag過濾器來做到這一點,但我堅持如何實際做到這一點。需要

function image_src($id, $alt, $title, $align, $size) { 
    $html = '<img data-orginial="' . esc_attr($img_src) . '"/>'; 
    return $html; 
} 
add_filter('get_image_tag', 'image_src', 10, 5); 

對於lazyload要工作lazy類也將被放置在IMG,我設法開始使用工作的WordPress get_image_tag_class過濾

function image_class($classes) { 
    return $classes . ' lazy'; 
} 
add_filter('get_image_tag_class', 'image_class'); 

我如何可以改變IMG輸出有什麼想法替換data-orginial而不是src

回答

0

您將需要更換src部分

function image_src($id, $alt, $title, $align, $size) { 
    if(! is_admin()) $html = str_replace("img src=","img data-original=",$html); 
    return $html; 
} 
add_filter('get_image_tag', 'image_src', 10, 5); 

您可能需要調整它,使之匹配原始<img>設置。

編輯:添加納思的建議。

+0

感謝您的幫助。它看起來像會破壞在WordPress編輯器中添加圖像。我想這可能沒有辦法解決。 – Rich

+0

@rich你可能會添加一個'if(!is_admin()){...}',這會阻止它在管理面板內發生。 – naththedeveloper

+0

@ɴᴀᴛʜ好想法。這可能是在正確的軌道上,儘管它似乎沒有立即工作。 – Rich

1

Rich-

我遇到了同樣的問題,去了相同的路徑你,欲以get_image_tag效果差。所以我想出了一個JS解決方法 - 代碼註釋應該告訴你如何得到這個工作:

function() { 
    // To get lazy loading working on blog post 
    // 1- Assign all image source paths into a sourcePath variable 
    var sourcePath = $("figure").find("img").attr("src"); 

    // 2- Nullify source paths, move path to data-original attribute and add lazy-load class to img 
    $("figure").find("img").attr({ 
    "src" : " ", 
    "data-original" : sourcePath 
    }).addClass("lazy-load"); 

    // 3- Applies lazy-loading jQuery plugin to image elements 
    $("img.lazy-load").lazyload({ 
    effect : "fadeIn" 
    }); 
}