这有点混乱,但您可以为\\u内容编写一个过滤器,使用正则表达式查找所有图像标记,然后用修改后的格式替换它们。
这种方法有一些挑战,最困难的是解析基本图像url,因为即使图像是通过Wordpress上传的,帖子中的实例也可能是全尺寸图像,也可能是缩略图。要将其转换为大小数组,需要基本图像url,然后可以将不同的大小添加到末尾(即150x150)。
还有一种可能性是,帖子作者插入了他们自己上传的图像,而不是通过Wordpress,或者他们正在热链接到外部图像。
典型的附件导入如下所示:
<img src="http://my_domain.com/wp-content/uploads/2012/08/image_name.jpg" alt="Description" width="150" height="150" class="aligncenter size-thumbnail wp-image-1237" />
因此,我们需要一个正则表达式来查找图像标记,但只查找那些实际的Wordpress附件。我只是在编写以下代码——要让正则表达式正常工作,我总是需要几次迭代——因此可能需要一些调整,但这里有一个概念:
function picturefill_images($content) {
if(preg_match("/<img.*?wp-image-(\\d+).*?\\/>/", $content, $matches);
foreach($matches as $match) {
$img_id = $match[1];
$new = "<div data-src=\'".wp_get_attachment_link($img_id, \'thumbnail\')."\'></div>";
$new .= "<div data-src=\'".wp_get_attachment_link($img_id, \'300x300\')."\' data-media=\'(min-width: 400px)\'></div>";
// etc, etc, etc...
$content = preg_replace("/".preg_quote($match[0])."/", $new, $content);
}
return $content;
}
add_filter(\'the_content\', \'picturefill_images\');
我们正在过滤包含wp图像的任何图像标记的内容-######,并捕获结束编号-即附件id。然后,我们使用该id构建具有不同附件大小的标记的替换。最后,用我们的替换项重新替换内容中的原始图像标记。
同样,这是所有白板工作-未经测试,但它应该让您朝着正确的方向开始。