$source ) { $sources[ $width ]['url'] = wmguru_rewrite_url( $source['url'], $attachment_id ); } return $sources; } add_filter( 'wp_calculate_image_srcset', 'wmguru_filter_srcset', 20, 5 ); /** * @param string $srcset srcset attribute value. * @param int $attachment_id Attachment id, 0 to look up per URL. * @return string */ function wmguru_rewrite_srcset_string( $srcset, $attachment_id ) { $entries = explode( ',', $srcset ); foreach ( $entries as $i => $entry ) { $bits = preg_split( '/\s+/', trim( $entry ), 2 ); if ( ! $bits || '' === $bits[0] ) { continue; } $bits[0] = wmguru_rewrite_url( $bits[0], $attachment_id ); $entries[ $i ] = implode( ' ', $bits ); } return implode( ', ', $entries ); } /** * Rewrite src/srcset inside post content. Runs after core has added * srcset (priority 10) so both attributes are final. * * @param string $content Post content. * @return string */ function wmguru_filter_content( $content ) { if ( ! is_string( $content ) || false === strpos( $content, 'next_tag( 'img' ) ) { $attachment_id = 0; $class = $processor->get_attribute( 'class' ); if ( is_string( $class ) && preg_match( '/(?:^|\s)wp-image-(\d+)(?:\s|$)/', $class, $m ) ) { $attachment_id = (int) $m[1]; } $src = $processor->get_attribute( 'src' ); if ( is_string( $src ) ) { $new = wmguru_rewrite_url( $src, $attachment_id ); if ( $new !== $src ) { $processor->set_attribute( 'src', $new ); } } $srcset = $processor->get_attribute( 'srcset' ); if ( is_string( $srcset ) && '' !== $srcset ) { $new = wmguru_rewrite_srcset_string( $srcset, $attachment_id ); if ( $new !== $srcset ) { $processor->set_attribute( 'srcset', $new ); } } } return $processor->get_updated_html(); } add_filter( 'the_content', 'wmguru_filter_content', 20 );