web-dev-qa-db-fra.com

Supprimer le protocole http des images

Je me suis cogné la tête contre le mur en essayant de filtrer mes publications pour supprimer le protocole http: de img src et je pense avoir peut-être trouvé une solution. Est-ce que quelqu'un voit quelque chose de mal avec cette solution dans la boucle:

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

echo $content
2
brandozz

Le code que vous avez fourni peut entraîner des problèmes avec les URL tierces dans les liens hypertexte n'exécutant pas https. Vous pouvez résoudre ce problème en incluant votre URL personnelle, par exemple:

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

Ensuite, vous appliquez ceci lorsque vous souhaitez afficher le contenu, ce qui signifie que vous devez effectuer une étape supplémentaire. Vous devez notamment appliquer un filtre appelé the_content qui effectue un traitement final, tel que la création de paragraphes, 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

Enfin, pour une compatibilité maximale, appelez simplement the_content(); et utilisez le filtre the_content pour effectuer vos modifications:

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

Les filtres et les hooks peuvent aller dans un plugin ou functions.php, voici à quoi ça ressemble comme un plugin:

/**
 * 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;
}
8
Tom J Nowell