WordPress

WordPress をSSL運用すると管理画面でアップロードした画像が見れない

More than 3 years have passed since last update.

WordPressネタばかりで嫌だ・・・。1日1個おかしな点が見つかる・・・。


Summary


  • WordPress 管理画面をSSLで運用

  • アイキャッチ画像を選ぶときに、アップロードした画像が見れない

  • 管理画面がSSLなのに img タグの src が HTTP通信なのが原因(WordPress自体のバグ)

  • さっさと直してくれよお願いだから。


Details


管理画面を SSL で運用(するよね?普通)

一応商業利用ですもの、管理画面はSSLにするじゃないですか。

もともとあまり考えられていないのか?SSLにすると何かしら事件が起きる WordPress ですが・・・


画像が見えない

よしきた。

管理画面に SSL を導入したその日、ログイン画面で CSS や画像が見えない事件が発生したが、それと同じ理由。

最近の(?)WEBブラウザは HTTPS の画面から HTTP通信しようとすると事前に止めてくれます。親切設計。

その時やった設定はこちら↓


httpd.conf

...

DocumentRoot /root/to/wordpress
SetEnv HTTPS on #これを追加
...

ELBの背後で80番しか受け取らないようにしているので、自分で環境変数を設定する必要があり。

wordpress 内に実は is_ssl() という関数があって、その中で環境変数を読んでくれます。


wp-includes/functions.php

3367 function is_ssl() {

3368 if ( isset($_SERVER['HTTPS']) ) {
3369 if ( 'on' == strtolower($_SERVER['HTTPS']) )
3370 return true;
3371 if ( '1' == $_SERVER['HTTPS'] )
3372 return true;
3373 } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
3374 return true;
3375 }
3376 return false;
3377 }

基本的にはSSLかどうかの判定はこの is_ssl() を使ってやっていて、CSSや画像もSSL通信に変えてくれるのですが・・・。

画像が見れないとはどういう了見だ(#゚Д゚)ゴルァ!!

アイキャッチ画像が見れない。

自分でアップロードした画像を「アイキャッチ画像」として選ぶのですが、その画像が見れない。

要素を検証すると、どっかで見た状態。

<img src="http://xxx...">

(つд⊂)ゴシゴシ

(つд・)

(つд⊂)ゴシゴシ

(・д⊂)

なんでや!(#゚Д゚)ゴルァ!!


調べた

こんな記事を見つけた↓

https://core.trac.wordpress.org/ticket/15928

WordPress の既存バグじゃねぇかよ!!!

3年前から議論してて未だに未対応って・・・。

4.0 で入れっからーじゃねぇよ(#゚Д゚)ゴルァ!!


直した

使ってるテーマの functions.php に以下を追加。

※ちなみに添付されてる最新のパッチでは直りませんでした\(^o^)/


functions.php

// http => https  -----------------------------------------------------

function fix_ssl_attachment_url( $url ) {
if( is_ssl() ){
$url = preg_replace('/^http:/', 'https:', $url);
}
return $url;
}
add_filter('wp_get_attachment_url', 'fix_ssl_attachment_url');

もういい加減 WordPressネタやめたい・・・。