我想修改Worpress在显示之前生成的内容。
到目前为止我看到的很多例子都使用正则表达式来改变内容,即使这是不好的做法,也不建议用正则表达式解析html。
我现在的想法是使用DOMDocument来解析和更改HTML。这是一个好主意还是会以任何方式破坏内容的完整性?
以下是我创建的一些Wordpress内容过滤器示例(它将图像缩小到视网膜显示尺寸的一半):
function fancyContentParser( $content ) {
$dom = new DOMDocument();
$dom->loadHTML($content);
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
$width = $image->getAttribute('width')/2;
$height = $image->getAttribute('height')/2;
$style = 'width: '.$width.'px; height: '.$height.'px';
$image->setAttribute('style', $style);
}
return $dom->saveHTML();
}
add_filter( 'the_content', 'fancyContentParser' );
答案 0 :(得分:1)
这个问题的答案可能主要是基于意见的......但我认为没有任何问题。但是,为什么不改变宽度和高度属性,而不是用style
覆盖它们?
foreach ($images as $image) {
$image->setAttribute( 'width', $image->getAttribute('width')/2 );
$image->setAttribute( 'height', $image->getAttribute('width')/2 );
}
此外,您可以在没有DOMDocument的情况下完成此操作...并且只使用CSS(无论如何,使用style
属性就是您提出的问题)。您可以使用transform
属性:
img {
-webkit-transform: scale(0.5);
transform: scale(0.5);
}