画像のアドレスからアタッチメントidを取得し、そのアドレスの別サイズの画像を表示させる
【長い前置き】
Typesのカスタムフィールドセットを利用して、「メインイメージ」とか「サブイメージ」を作りました。
「メインイメージ」は大き目サイズで表示させてー、サブイメージはサムネイルサイズの正方形のを表示させたい!という設定です。
カスタムフィールドの「画像アップロード」から、画像をアップロードし、その画像の「サイズ」で「サムネイル」を選んで、追加されている「Types」というとこの「field値で設定」をクリックしたら「サムネイル」の画像のURLが値に挿入されるんだろうなぁと思っていたのです。
違った…。
挿入されるのは、その画像のオリジナルファイル名。一番おおきな画像です。wordpressを通してアップロードしたのだから、サムネイルもミドルサイズもすべて作られているはず…もったいない!!
オリジナルファイル名ということは、うまくすればwp_postからIDを取得し、そのIDで「wp_get_attachment_image_src」を使用して、表示したい画像サイズのファイルを引っ張ってこれるはず……。と、考えたり調べたりしていたら、とっても素敵なサイトさんを発見しました。
【結論】
WordPressで画像のURLからアタッチメントIDを取得する
まさに、その方法です。正規表現が苦手な私として、とってもありがたいことでございました……。
サムネイル、ミドルサイズ、ラージサイズ……任意のサイズで画像を保存させたい
【長い前置き】
「メインイメージ」は、お客様がデジカメでとった写真そのまま入れてもらって、横長に勝手に加工されるほうが楽ですよね。「mainimage」に使用するためのサイズに自動的に保存してくれないかな。
【結論】
add_image_size を使用すれば簡単です。
仕様するテーマフォルダにfunctions.phpを作って(あるならそのファイルに追加)、上記のコードを追加するだけ!
メディアのサイズ選択には表示されないけど、特殊なサイズを取り出すなんて、特殊な条件だろうから、テーマファイルに書いてしまえばいいですよね。
ちなみに、私は
[php]
<em id="__mceDel">add_image_size( ‘mainimage’,675 , 403, true );
[/php]
を追加して、その画像を引っ張ってくるところは
[php]
<img src="<?php echo get_attachment_image_src($post -> {‘wpcf-mainimage’}, ‘mainimage’); ?>" alt="" />
[/php]
としました。mainimegeはTypesで設定したカスタムフィールドなので、「wpcf-」が頭についてます。
また、随時更新します。
コメントを残す