web-dev-qa-db-ja.com

画像からhttpプロトコルを削除する

私は自分の投稿をフィルタリングしてhttp:プロトコルをimg srcから削除しようとして壁にぶつかっていましたが、解決策を見つけたかもしれないと思います。誰もがループ内でこの解決策に何か問題があると思いますか。

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

echo $content
2
brandozz

あなたが提供したコードは、httpsを実行していないハイパーリンク内のサードパーティURLに関する問題を引き起こす可能性があります。あなたはあなたの自宅のURLを含めることでこれを直すことができます。

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

次に、コンテンツを表示したいときにこれを適用します。つまり、追加の手順を実行する必要があります。つまり、the_contentという名前のフィルタを適用して、段落の作成などの最終処理を行う必要があります。

$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

最後に、最大限の互換性を保つには、the_content();を呼び出し、the_contentフィルタを使用して変更を加えます。

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

フィルタとフックはプラグインやfunctions.phpの中に入れることができます、これはプラグインのように見えるものです:

/**
 * 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