2015-06-11 2 views
-1

Я бы хотел возиться с содержимым, которое Worpress генерирует, прежде чем он отобразится.Можно ли использовать DOMDocument для контента Wordpress?

Множество примеров, которые я видел до сих пор, используют регулярное выражение для изменения содержимого, хотя это неправильная практика и не рекомендуется анализировать 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

Ответов на этот вопрос, вероятно, будет в первую очередь на основе мнений .. но я не вижу в этом ничего плохого. Однако почему бы вам просто не изменить атрибуты ширины и высоты, а не переопределить их с помощью 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); 
} 
+0

Точно .. ответ на этот вопрос, вероятно, будет в основном основан на мнениях. – Deep

+0

уверен, я могу настроить атрибуты width/height, а не стиль, но это не моя проблема. transfrom - это crap btw, поскольку он оставляет белое пространство вокруг трансформированного изображения размером исходного изображения. Я также не думаю, что мой вопрос приводит к ответам на основе optinion. например я только что узнал, что у DOMDocument есть проблемы с utf-8 персонажами, так что это ловушка прямо там, и это тот намек, который я ищу. – nerdess

Смежные вопросы