是否可以在Wordpress内容上使用DOMDocument?

时间:2015-06-11 07:26:54

标签: wordpress domdocument

我想修改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' );

1 个答案:

答案 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);
}