Remova o protocolo http das imagens

2

Eu tenho batido minha cabeça na parede tentando filtrar minhas postagens para remover o protocolo http: do img src e acho que encontrei uma solução. Alguém vê algo errado com essa solução dentro do loop:

$content = get_the_content();
$content = str_replace(array('http:', 'https:'), '', $content);

echo $content
    
por brandozz 08.01.2015 / 02:45

1 resposta

8

O código que você forneceu pode causar problemas com URLs de terceiros em hiperlinks que não executam https. Você pode corrigir isso incluindo o URL da sua casa, por exemplo:

$content = str_replace( set_url_scheme( home_url(), 'http' ), set_url_scheme( home_url(), 'relative' ), $content);

Em seguida, você está aplicando isso quando deseja exibir o conteúdo, o que significa que precisa fazer uma etapa adicional. Ou seja, você precisa aplicar um filtro chamado the_content , que faz algum processamento final, como criar parágrafos, etc.:

$content = get_the_content();
$content = str_replace( set_url_scheme( home_url(), 'http' ), set_url_scheme( home_url(), 'relative' ), $content);
$content = apply_filters( 'the_content', $content );

echo $content

Por fim, para compatibilidade máxima, basta chamar the_content(); e usar o filtro the_content para fazer sua modificação:

add_filter( 'the_content', 'brandozz_url_filter' );

function brandozz_url_filter( $content ) {
    $content = str_replace( set_url_scheme( home_url(), 'http' ), set_url_scheme( home_url(), 'relative' ), $content);
    return $content;
}

Filtros e ganchos podem entrar em um plug-in ou functions.php , é assim que ele aparece como um plug-in:

/**
 * Plugin Name:       Relative local URLs
 * Plugin URI:        http://wordpress.stackexchange.com/questions/174228/remove-the-http-protocol-from-images
 * Description:       Replaces http:// URL containing the home url, with relative protocol urls 
 * Version:           1.0.0
 * Author:            Tom J Nowell
 * Author URI:        http://tomjn.com/
 */

add_filter( 'the_content', 'tomjn_filter_relative_content_urls' );

function tomjn_filter_relative_content_urls( $content ) {
    $content = str_replace( set_url_scheme( home_url(), 'http' ), set_url_scheme( home_url(), 'relative' ), $content);
    return $content;
}
    
por Tom J Nowell 08.01.2015 / 03:44