カスタムフィールドで登録した画像のURLを表示させる
-
クリックで画像が変わるフォトギャラリーを作ろうと思います。
こんな感じです。
http://2244.jp/_demo/jquery-image-change/02/それで、カスタムフィールドで登録した画像の、サムネイル、中サイズのURLを取得したいのですが、どのようにすればよろしいでしょうか?
もしくは、このようなフォトギャラリーが間単に作れるプラグイン等があれば教えてください。
商品の紹介ページにしたので、それぞれの投稿で、それぞれのギャラリーをつくろうと思います。
-
http://ja.forums.wordpress.org/topic/3134?replies=12
こちらを参考にしました。
カスタムフィールドで登録した画像のkeyは、image01です。
$image01 = get_post_meta($post->ID, 'image01', true); echo wp_get_attachment_image_src($image01, 'thumbnail');
これで、サムネイルのURLが表示されるかと思いましたが、白紙です。
なぜでしょうか?
ngoaさん、こんにちは。
wp_get_attachment_image_srcの返値は、画像のURL、width、heightなどの配列、もしくは画像が無かった場合にfalseとなりますので、そのままechoしてもArrayか0が表示されるはずです。
ですので、$image01 = get_post_meta($post->ID, 'image01', true); $thumb = wp_get_attachment_image_src($image01, 'thumbnail'); if ( $thumb ) { echo $thumb[0]; }
のような感じでいかがでしょう。
jim912さんありがとうございます。
上記のようにやってみたのですが、何も表示されません。
var_dump($thumb);
でやってみたのですが、bool(false)
でした。もちろんサーバー上には、各サイズ (thumbnail, medium, large, full)はありました。
どうしてでしょうか?
因みに、カスタムフィールドの登録は、Custom Field GUI Utilityを使いました。
おんや?カスタムフィールドで投稿した画像って、WordPress上で通常投稿した画像と同じ扱いになるんでしたっけ?
同じ投稿にカスタムフィールドを使わないで画像を通常投稿したらvar_dump($thumb);
できませんか?だとしたらwp_get_attachment_image_src
では取得できないかもしれません。shokun0803さん、よろしくお願いします。
おんや?カスタムフィールドで投稿した画像って、WordPress上で通常投稿した画像と同じ扱いになるんでしたっけ?
というのは、
$image01 = get_post_meta($post->ID, 'image01', true); $thumb = wp_get_attachment_image_src($image01, 'thumbnail'); if ( $thumb ) { echo $thumb[0]; }
は、カスタムフィールドで投稿した画像のサムネイルURLを取得する記述ではなく、通常投稿した画像のサムネイルURLを取得する記述ということですか?
同じ投稿にカスタムフィールドを使わないで画像を通常投稿したらvar_dump($thumb);できませんか?だとしたらwp_get_attachment_image_srcでは取得できないかもしれません。
同じ投稿にカスタムフィールドを使わないで画像を通常投稿して、var_dump($thumb); してみましたが、何も表示されませんでした。
おっと、私思いっきり勘違いしていましたね。ちゃんと読んでなくてすみません、すみません。
で、問題の切り分けですが、まず画像はサーバー上の所定の位置にアップロードされているのですかね?
$thumb = wp_get_attachment_image_src($image01, 'thumbnail');
を
$thumb = wp_get_attachment_image_src($image01, 'full');
でも表示されませんか?また、
$image01 = get_post_meta($post->ID, 'image01', true);
の時、$image01には画像のIDがちゃんと入っているのかも確認した方がよさそうです。
shokun0803さん、ありがとうございます。
で、問題の切り分けですが、まず画像はサーバー上の所定の位置にアップロードされているのですかね?
はい、アップされています。
ダッシュボードの「カスタムフィールド」の欄にも
名前:image01
値:<img src=”http://www.hogehoge.com/wp/wp-content/uploads/2010/08/003.JPG” alt=”_003″ class=”cfg_img” />となっています。
因みに、値を
http://www.hogehoge.com/wp/wp-content/uploads/2010/08/003.JPG
としても同じでした。$thumb = wp_get_attachment_image_src($image01, ‘full’);
これも同じでした。
$image01 = get_post_meta($post->ID, ‘image01’, true);
の時、$image01には画像のIDがちゃんと入っているのかも確認した方がよさそうです。すみません、画像のIDがちゃんと入っているのかを調べるにはどうしたらよろしいのですか?
$image01
をvar_dump($image01);
して意図したIDが入っていればよいのでは?今回の場合カスタムフィールドで画像を登録した時のIDでしょうか?shokun0803さん
var_dump($image01);をしてみたら、カスタムフィールドで登録した画像が表示されました。
名前:image01
値:<img src=”http://www.hogehoge.com/wp/wp-content/uploads/2010/08/003.JPG” alt=”_003″ class=”cfg_img” />これです。
この後、
var_dump($image01);
では、カスタムフィールドで登録した画像URLが表示されたのですが、その画像のサムネイルが取得できません。
サーバーには
2010/08/003-160×160.jpg
としてサムネイル画像が入っています。
var_dump($thumb);
としても、bool(false) となってしまいます。現在以下のように記述しております。
<?php $image01 = get_post_meta($post->ID, 'image_01', true); $thumb = wp_get_attachment_image_src($image_01, 'thumbnail'); if ( $thumb ) { echo $thumb[0]; } var_dump($image01); var_dump($thumb); ?>
var_dump($image01);をしてみたら、カスタムフィールドで登録した画像が表示されました。
var_dump($image01);
では、カスタムフィールドで登録した画像URLが表示されたのですが、その画像のサムネイルが取得できません。
wp_get_attachment_image_src()には、attachment_idを渡します。
以前はimgタグ、現在は画像のURLを渡しているので、wp_get_attachment_image_src()が機能しないのでしょう。
Function Reference/wp get attachment image src -Codex 英語版
attachment_idを取得するには、ループ内でget_children()を使用します。
使い方は、関数リファレンス/get_children – Codex 日本語版の用例やフォーラム » 使い方全般 » 投稿画像のサムネイルへのフルパスを出力などを参照
投稿作成時に毎回アップロードするのでしたら、メディア機能でアップロードして置くだけでいいです。
アップロードすると[ギャラリー]タブに画像が認識されている状態になりますが、get_children()でそれらの画像が取得出来ます。
投稿に挿入する必要も、カスタムフィールドに挿入する必要もありません。popupさん、ありがとうございます。
取りあえず以下で出来ました。
<?php
$imagefield = get_imagefield(‘image_01’);
$thumb = wp_get_attachment_image_src($imagefield[‘id’], ‘thumbnail’);
echo “<img src=’$thumb[0]’ />”;
?>get_children()も試してみます。
get_imagefield()はCustom Field GUI Utilityの独自関数のようですね。
imagefield・filefield の使い方(ver 3.1 以降)- かたつむりくんのWWW
後からこのトピックを見る人の為に、一応補足しておきます。
- トピック「カスタムフィールドで登録した画像のURLを表示させる」には新たに返信することはできません。