如何在wordpress帖子的图像中添加自动类

Ami*_*ker 14 css wordpress wordpress-theming twitter-bootstrap-3

我想用Bootstrap 3制作一个响应主题.但是,我需要自动将CSS类添加.img-responsive到每个帖子图像,因为我需要图像响应.

请建议我在WordPress的functions.php文件或任何其他文件中添加我需要自动添加CSS类的内容.

Ahm*_*saf 42

因为您需要为所有帖子图像提供它,所以您需要为内容添加一个钩子并添加

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');
        }

        $html = $document->saveHTML();
        return $html;
}
Run Code Online (Sandbox Code Playgroud)

现在添加钩子到内容

add_filter        ('the_content', 'add_responsive_class');
Run Code Online (Sandbox Code Playgroud)

但是,如果你已经有了img的类,你需要添加一个新类,那么你可以引用相当于jQuery addClass的PHP.或者,你可以简单地这样做:

$existing_class = $img->getAttribute('class');
$img->setAttribute('class', "img-responsive $existing_class");
Run Code Online (Sandbox Code Playgroud)

上面的代码工作..我用它来删除src和data-src图像延迟加载.希望这对你有用

  • 很好地使用DOMDocument.我看到许多人建议在这种类型的应用程序中使用正则表达式.+1 (3认同)
  • @Juan其他人建议也有一个JS解决方案,而且答案是这意味着页面必须从PHP生成然后这个函数将在文档加载或你定义的任何其他钩子上运行..它更好地拥有类在生成的PHP文件中,您将保存可以直接在后端完成的不必要的DOM操作,并且在您进行缓存的情况下也非常有用.一些响应式图像可以通过CSS实现并使用jQuery实现,因为您建议的解决方案需要启用JS,而某些情况可能并非总是如此 (3认同)

Yar*_*ron 28

这种方法更好:https://wordpress.stackexchange.com/questions/108831/add-css-class-to-every-image

function add_image_class($class){
    $class .= ' additional-class';
    return $class;
}
add_filter('get_image_tag_class','add_image_class');
Run Code Online (Sandbox Code Playgroud)

唯一需要注意的是,它会在您插入新图像时在编辑窗格中添加该类,并且不会影响现有图像.

  • 这个答案比其他人好.它应该被标记为正确的答案. (2认同)

Syc*_*one 15

我认为最简单的方法是使用这样的CSS.

.content img { height: auto; max-width: 100%; }
Run Code Online (Sandbox Code Playgroud)

where .content是包含您的帖子内容的区域.

注意:您可能还想覆盖.wp-caption类,就像这样.

.wp-caption { width: auto !important; }
Run Code Online (Sandbox Code Playgroud)


小智 11

我有同样的问题,并将此函数添加到functions.php为我工作.

function add_image_responsive_class($content) {
   global $post;
   $pattern ="/<img(.*?)class=\"(.*?)\"(.*?)>/i";
   $replacement = '<img$1class="$2 img-responsive"$3>';
   $content = preg_replace($pattern, $replacement, $content);
   return $content;
}
add_filter('the_content', 'add_image_responsive_class');
Run Code Online (Sandbox Code Playgroud)


Ber*_*and 5

当您在循环中显示帖子时,您可以:

the_post_thumbnail('thumbnail', array('class' => 'img-responsive'));
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅https://codex.wordpress.org/Function_Reference/the_post_thumbnail.


dig*_*ggy 0

类不是在上传时添加的,而是在图像发送到编辑器时添加的。您可以使用image_send_to_editor过滤器添加一个或多个类。这个例子添加了一个fancybox类。