• 解決済 cnoise

    (@cnoise)


    WordPress 4.1.8
    WordPress HTTPS 3.3.6
    を利用しています。

    お問い合わせページ等の一部ページだけをHTTPSにして他ページはHTTPのままなのですが、
    トップページにサイトシールを表示できなくて困っています。

    WordPress HTTPSのログを確認すると、
    JavaScriptで記述してあるサイトシールのURLの https:// が http:// に変換されていました。

    この自動変換を無効にすることはできないのでしょうか?
    googleで検索したところ「Disable Automatic HTTPS」をチェックしてというのがあったのですが、現バージョンではこの設定項目がないようです。
    https://ja.forums.wordpress.org/topic/7838?replies=3

    function.phpの変更や他のプラグインの利用でもかまいませんので、
    解決方法のご教示をお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    WordPress HTTPS には、http_external_url というフィルターがあり、これによって外部サイトのURLを書き換えるかどうかを調整できます。

    よくあるのは、google map の埋め込みが http に書き換えられてしまう問題で、これについては、以下のようなコードで https を維持することが可能です。

    add_filter( 'http_external_url', 'google_maps_secure_protcol' );
    function google_maps_secure_protcol( $updated ) {
        if ( preg_match( '!^http://www.google.com/maps/!', $updated ) ) {
            $updated = str_replace( 'http://www.google.com/maps/', 'https://www.google.com/maps/', $updated );
        }
        return $updated;
    }
    トピック投稿者 cnoise

    (@cnoise)

    jim912様

    ありがとうございます。
    ご提示いただいたコードのgoogleに関する部分を変更すれば他のURLにも流用ができそうですね。
    今は、緊急処置としてインラインフレームで表示していますので、後で試してみたいと思います。

    結果については、改めて書き込みさせていただきます。

    トピック投稿者 cnoise

    (@cnoise)

    jim912様

    ありがとうございました。
    ご提示いただいたコードを改変したところ、無事サイトシールが表示されました。
    ソースを確認してもhttpsになっておりました。

    これで、強引な手を使わなくてよくなりました。
    本当にありがとうございました。

    改変後のコードは下記です。

    add_filter( 'http_external_url', 'seal_norton_secure_protcol' );
    function seal_norton_secure_protcol( $updated ) {
        if ( preg_match( '!^http://seal.websecurity.norton.com/!', $updated ) ) {
            $updated = str_replace( 'http://seal.websecurity.norton.com/', 'https://seal.websecurity.norton.com/', $updated );
        }
        return $updated;
    }

    これで、同様の問題発生時にも同じような改変をすることで対応することができると思います。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「WordPress HTTPS でページ内リンクの自動変換を無効にしたい」には新たに返信することはできません。