$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 );