Add a CSS class to all images on a page that have a width less than 480px using DomDocument

后端 未结 1 624
梦如初夏
梦如初夏 2021-01-25 16:21

I would like to add a CSS class to all images on the page (WordPress post/pages) that are below a certain width.

The following works but setAttribute is

1条回答
  •  清歌不尽
    2021-01-25 17:12

    Ok this works. Grabbed the existing classes and added them back into the setAttribute with the new class I wanted. If anyone had a better method, please let me know.

    function add_class_to_small_images( $content ) {
    
    $dom = new DOMDocument();
    @$dom->loadHTML( $content );
    $dom->preserveWhiteSpace = false;
    
    $images = $dom->getElementsByTagName('img');
    
    foreach ($images as $image) {
    
        // get the widths of each image
        $width = $image->getAttribute('width');
    
        // the existing classes already on the images
        $existing_classes = $image->getAttribute('class');
    
        // the class we're adding
        $new_class = ' this-will-be-the-class';
    
        // the existing classes plus the new class
        $class_names_to_add = $existing_classes . $new_class;
    
        // if image is less than 480px, add their old classes back in plus our new class
        if( $width < 480) {
            $image->setAttribute('class', $class_names_to_add);
        }
    }
    
      $content = $dom->saveHTML();
    
    
    return $content;
    }
    

    0 讨论(0)
提交回复
热议问题