Damonge Tech

気になった話をする。

WordPressで「wp_get_attachment_url()」の出力URLをhttpsにする方法

アイキャッチ画像をhttpsで出力したい!

Googleが常時SSL対応を推奨してから幾星霜の時が流れた。(本格化し始めたのは2014年後半頃)

WordPressで自作テーマを作っていたりすると、悩ましいことがある。

それはwp_get_attachment_image_src();を使っているとき!

このWordPressの標準関数を利用すると、WordPress 4.7.3時点では出力される画像URLが「http://~」になってしまうことが悩ましい。「https://~」で出力してほしい。

サクッと2通りの解決方法を書いておく。

①置換する(非推奨)

1つ目の方法はpreg_replace("^http:", "https:", $thumbnailUrl)でそれぞれ出力部分で置換処理をする方法。

解説すると1行目で$thumbnailUrlに対してサムネイル画像URLを代入している。この時点ではhttpの値となっている。

2行目でpreg_replace("^http:", "https:", $thumbnailUrl)を行い、$thumbnailUrlの行頭にあるhttpをhttpsに置換している。

3行目はその結果を出力しているだけなので、説明はいらないだろう。

この方法を使うべきタイミングは、テンプレートの中で1度しかhttpsに変換する必要がないだとか、極めて使用タイミングが限定的な場合に限った方がいい。

なぜなら、この処理を書き忘れるたびにデグレード扱いとなって修正が必要となるからだ。

②フィルターを追加

2つ目の方法は簡単に言えば、先述した①と同等の処理をwp_get_attachment_url()を実行するたびに自動的に行ってしまうフィルタを実装する方法。

functions.phpに下記のコードを挿入するだけで、今まで通りwp_get_attachment_image_src();を使うだけで、出力されるURLがhttpsになる。

こちらのコードの根幹部分は海外フォーラムにて掲載されていたものを大いに参考にしている。

以上だ。基本的に②の方法を採用することによるデメリットは存在しないだろう。

-WordPress