I want to apply jquery lazyload plugin. For this to work I have to create a new attribute which is data-src place there the src value and then replace the src value with a specific value '...nothing.gif'
.
I found a solution on wordpress.org support
This is my adapted code –
function add_lazyload($content)
{
global $post;
$search = '/src="([^s]+(?=.(bmp|gif|jpeg|jpg|png)).2)"/';
$content = replacer($content, $search, '/src/', 'data-original');
$search = '/img class="/';
$content = replacer($content, $search, '/class="/', 'class="lazy ');
$search = '/alt/';
$content = replacer($content, $search, '/alt/', 'src="'.get_template_directory_uri().'/library/images/nothing.gif"');
return $content;
}
function replacer($src, $search, $find, $replace)
{
preg_match_all($search, $src, $result, PREG_OFFSET_CAPTURE);
foreach($result[0] as $entry)
{
$org = $entry[0];
$rep = preg_replace($find, $replace, $entry[0]);
$org = "/" .str_replace(array("=",":","/",".","-","_",'"',"'"," "), array("=",":","/",".","-","_",'"',"'"," "), $org). "/";
$src = preg_replace($org, $rep, $src);
}
return $src;
}
add_filter('the_content', 'add_lazyload');
The problem with this code is that it replaces every alt
string (for example in a paragraph) with .../library/images/nothing.gif
, not just the alt image attribute.
Does anyone know how to solve this?
instead of replacing the alt tag you could add-an-attribute-to-a-tag
note: i didn’t quite tested this code, so be careful 🙂
I modified peteroak’s excellent solution to convert to utf-8 and stripped the doctype, html, and body from the ouput.
I added some features to Shieeets solution:
Here is the PHP code: