Eliminar el protocolo http de las imágenes

2

He estado golpeando mi cabeza contra la pared tratando de filtrar mis publicaciones para eliminar el http: protocol del img src y creo que puedo haber encontrado una solución. ¿Alguien ve algo malo con esta solución dentro del bucle:

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

echo $content
    
pregunta brandozz 08.01.2015 - 02:45

1 respuesta

8

El código que proporcionó podría causar problemas con las URL de terceros en hipervínculos que no ejecutan https. Puede solucionar este problema incluyendo su URL de inicio, por ejemplo:

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

A continuación, está aplicando esto cuando desea visualizar el contenido, lo que significa que debe realizar un paso adicional. Es decir, debe aplicar un filtro llamado the_content que realiza algún procesamiento final, como crear párrafos, 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

Finalmente, para una máxima compatibilidad, solo llame a the_content(); , y use el filtro the_content para hacer su modificación:

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;
}

Los filtros y enlaces pueden ir dentro de un complemento o functions.php , esto es lo que parece como un complemento:

/**
 * 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;
}
    
respondido por el Tom J Nowell 08.01.2015 - 03:44

Lea otras preguntas en las etiquetas