Я хочу добавить class = img-reponsive и img-shadow ко всем прикрепленным эскизам поста. Я использовал следующую функцию, которая отлично работает, но удаляет исходные классы thubmails

function add_responsive_class($content){

        $content = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
        $document = new DOMDocument();
        libxml_use_internal_errors(true);
        $document->loadHTML(utf8_decode($content));

        $imgs = $document->getElementsByTagName('img');
        foreach ($imgs as $img) {           
           $img->setAttribute('class','img-responsive img-shadow');
        }

        $html = $document->saveHTML();
        return $html;   
}

Но я хочу объединить свои классы, а не просто перезаписать их, поэтому я использовал jquery

 jQuery(function() {
jQuery(img).addClass('img-responsive img-shadow ');
});

Но его ошибка jquery не определена

Пожалуйста, помогите мне

1
terminator 29 Апр 2014 в 17:09

3 ответа

Лучший ответ
function add_image_responsive_class($content) {
   global $post;
   $pattern ="/<img(.*?)class=\"(.*?)\"(.*?)>/i";
   $replacement = '<img$1class="$2 img-responsive img-shadow"$3>';
   $content = preg_replace($pattern, $replacement, $content);
   return $content;
}
add_filter('the_content', 'add_image_responsive_class');
7
terminator 29 Апр 2014 в 13:33

Почему бы вам просто не повторно добавить исходный класс со своей функцией?

function add_responsive_class($content){

        $content = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
        $document = new DOMDocument();
        libxml_use_internal_errors(true);
        $document->loadHTML(utf8_decode($content));

        $imgs = $document->getElementsByTagName('img');
        foreach ($imgs as $img) {           
           $img->setAttribute('class','thumbnails img-responsive img-shadow');
        }

        $html = $document->saveHTML();
        return $html;   
}
0
danyo 29 Апр 2014 в 13:43

Если вы используете метод DOMDocument, упомянутый выше, это может вызвать проблемы с кодировкой utf, особенно при использовании специальных символов в редакторе контента, например: £, преобразуемый в? или другие странные персонажи. Вы можете перебрать $ img в цикле, а затем использовать str_replace для $ content, но использование метода терминаторов сработало для меня намного лучше.

0
Ben Matthews 17 Ноя 2017 в 08:37