= 2 ) { unset( $class_parts[0] ); return implode( '-', $class_parts ); } } } } return null; } /** * @param array $img * * @return null|string */ public function get_size_from_attributes( array $img ) { if ( array_key_exists( 'attributes', $img ) && array_key_exists( 'width', $img['attributes'] ) && array_key_exists( 'height', $img['attributes'] ) ) { $width = $img['attributes']['width']; $height = $img['attributes']['height']; $size_name = $this->get_image_size_name( $width, $height ); if ( $size_name ) { return $size_name; } } return null; } /** * @param array $img * * @return null|string */ public function get_attachment_size( array $img ) { $size = null; if ( array_key_exists( 'size', $img ) ) { $size = $img['size']; } if ( ! $size ) { $size = $this->get_size_from_class( $img ); } if ( ! $size ) { $size = $this->get_size_from_attributes( $img ); } if ( ! $size ) { $size = $this->get_size_from_url( $img ); } return $size; } /** * @param string $width * @param string $height * * @return null|string */ private function get_image_size_name( $width, $height ) { global $_wp_additional_image_sizes; foreach ( get_intermediate_image_sizes() as $size ) { if ( isset( $_wp_additional_image_sizes[ $size ] ) ) { if ( $width == $_wp_additional_image_sizes[ $size ]['width'] && $height == $_wp_additional_image_sizes[ $size ]['height'] ) { return $size; } } elseif ( in_array( $size, array( 'thumbnail', 'medium', 'medium_large', 'large' ) ) ) { if ( $width == get_option( "{$size}_size_w" ) && $height == get_option( "{$size}_size_h" ) ) { return $size; } } } return null; } /** * @param array $img * * @return null|string */ private function get_size_from_url( array $img ) { $size = null; if ( isset( $img['attributes']['src'], $img['attachment_id'] ) ) { $size = $this->get_image_size_from_url( $img['attributes']['src'], $img['attachment_id'] ); } return $size; } /** * @param $url * @param $attachment_id * * @return null|string */ public function get_image_size_from_url( $url, $attachment_id ) { $size = null; $thumb_file_name = basename( $url ); $attachment_meta_data = wp_get_attachment_metadata( $attachment_id ); if ( isset( $attachment_meta_data['sizes'] ) ) { foreach ( $attachment_meta_data['sizes'] as $key => $size_array ) { if ( $thumb_file_name === $size_array['file'] ) { $size = $key; break; } } } return $size; } }