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

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

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

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

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

そしたら @jim0912 さんがFacebookで

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

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

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

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

Follow me!

投稿者プロフィール

kurudrive
普段はWordPressを使って企業サイトなどを制作しつつ、
WordPress関連のイベントにもよく顔を出しています。
■WordPressテーマ「BizVektor」コア開発者
■最近のWordPressコミュニティでの活動
2013 WordCrab Fukui セッションスピーカー
2012 WordCamp Tokyo セッションスピーカー
2012 WordBeach Nagoya 実行委員 & セッションスピーカー

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

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です