WordPressで getimagesize() を使ってコケた時のファイルパスの置換

WordPressのカスタムフィールドなどに画像のURLを保存する事ってありますよね?

(個人的には最近はメディアのIDで保存する事多いのですが、それだと汎用テーマとかでデータのエクスポート・インポートを昔ながらのxmlでやられた時に困ったりするので悩ましい...)

そして、その画像の大きさを取得するためにgetimagesize()を使った場合、wpXなどサーバーによっては許可されてなくて困りました。

自分で管理する特定のサーバーだったらphpiniごにょったりとかでも良いのですが、誰がどこのサーバーで運用するかわからない場合でも動かないといけないので...。

そしたら @jim0912 さんがFacebookで

なぜサーバのパスにしないのかと小一時間

と、ありがたいコメントを頂いたので、サーバーパスに書き換えるコードを書いて無事動きました。

[sourcecode language="php"]
/*----------------------------------------*/
/* URLから wp-content より後の部分を取得
/*----------------------------------------*/
$path_url = '★カスタムフィールドに保存された画像のURL★';
$pattern = '/.*wp-content(.*)/';
preg_match($pattern, $path_url, $matches_url);
$path_rear = $matches_url[1];

/*----------------------------------------*/
/* サーバーパスを取得して wp-content 以前の部分を取得
/*----------------------------------------*/
$pattern = '/(.*wp-content)/';
$path_sv = __FILE__;
preg_match($pattern, $path_sv, $matches_sv);
$path_front = $matches_sv[1];

/*----------------------------------------*/
/* 画像のサーバーパスを生成
/*----------------------------------------*/
$path_new = $path_front.$path_rear;

$image_size = getimagesize($path_new);
[/sourcecode]

これでめでたく動作しましたが、もし こうやった方がいいよとかあればコメントで教えていただけると幸いデス。

投稿者プロフィール

kurudrive
名古屋のウェブ制作会社数社に10年程度務めた後、株式会社ベクトル設立。
企画・運営・コンサルティング〜WordPressを中心としたシステム開発まで幅広く携わる。
[ 著書 ]
・いちばんやさしいWordPressの教本(共著)
・現場でかならず使われているWordPressデザインのメソッド(共著)
[ 最近のWordPressコミュニティでの活動 ]
2018 WordCampOsaka セッションスピーカー
2017 WordCampKyoto セッションスピーカー
2016 WordCampTokyo LT
2016 WordCampKansai ハンズオン世話役
2015 WordCampTokyo セッションスピーカー
2015 WordCampKansai セッションスピーカー
2014 WordFesNagoya 実行委員 & セッションスピーカー
2013 WordCampTokyo セッションスピーカー(パネラー)
2013 WordFesNagoya 実行委員 & セッションスピーカー
2013 WordCrabFukui セッションスピーカー

Follow me!

シンプルでカスタマイズしやすいWordPressテーマ

Lightningは twitter Bootstrap ベースのシンプルでカスタマイズしやすいWordPressテーマです。
プラグイン VK All in One Expansion Unit とセットで使う事でビジネスサイトにもブログにも活用できます。