画像URLの取得 wp_get_attachment_image_src
-
皆様。
カスタムフィールドテンプレートというプラグインからUPした画像のURLを取得できないものかとCodexなどを見ていたところ、wp_get_attachment_image_src
という関数があることを知り試してみました。テンプレート内に、
<?php $Key = get_post_meta($post->ID, ‘Key’, true); echo wp_get_attachment_image_src( 0 ); ?>
などと書いてみましたが、html上は空になっております。なにぶんWP初心者故、関数がおかしいのであろうといろいろと触ってはみましたが、
上手くいきませんでした。皆様、お知恵をお貸しいただけませんでしょうか。
-
kzさま。
たびたびありがとうございます。$Key が画像の ID とすると
はい、現状「写真1」としております。
で、ご指摘いただきました通り、
<?php $写真1 = get_post_meta($post->ID, ‘写真1’, true); echo wp_get_attachment_link(写真1); ?>
とした所、
<img width=”109″ height=”165″ src=”http://hogehoge.com/wp/wp-content/uploads/2010/01/image011.jpg” class=”attachment-thumbnail” alt=”” title=”image01″ />
と出力されました。
この
http://hogehoge.com/wp/wp-content/uploads/2010/01/image011.jpg
だけ出力することは可能でしょうか。
というのも、下記のようなコード内に画像のパスだけを挿入したいと思っております。
説明が不足しており、申し訳ありません。
以上、よろしくお願いいたします。
>kzさま。
たびたびありがとうございます。
$image = wp_get_attachment_image_src($Key, ‘full’);
echo $image[0];で出力されました!
が、少し挙動がおかしい点がございまして改めてご相談させていただければ、と存じます。
同じコードを記述しているにも関わらず前後のタグなどで(?)出力される場合と、されない場合があるのです。
<li><a onmouseover="MM_swapImage('photo','<?php $image = wp_get_attachment_image_src($写真1, 'full'); echo $image[0]; ?>',1)" href="JavaScript:;"><img src="<?php $image = wp_get_attachment_image_src($写真1, 'full'); echo $image[0]; ?>" /></a></li>
とした場合、aタグ内には出力されるのですがimgタグ内は出力されないのです。
aで囲まずimg単独で置いて見ても出力されません。あと、現在制作中サイトでは1エントリー内に、4枚(カスタムフィールドテンプレートを用いて)画像を表示する予定です。
よって、上記ソースの$写真1の箇所をそれぞれ設定している$Keyに変えたものを置いているのですが、$写真1(aタグ内)だけしか出力されず他は空の状態です。
※同じ$Keyのものを4つコピーした場合は4つ出力されます。解決策やそもそもの原因となり得る可能性の心当たりも見当たらないのですが、
お心当たりございましたらご教授願えませんでしょうか。以上、よろしくお願いいたします。
・aタグは出力されるがimgタグでは出力されない、について
$写真1 を 直接画像のIDや$key(=画像のID)に置き換えて試しましたが
imgタグでも正常に出力されます。img単独で置いて見ても出力されません
現象が再現する必要充分なコードを提示よろしくです。
・4枚表示時に$keyを変えたものでは出力されない。
$keyを変えたものに画像のIDが入ってないだけな気がしますが、
こちらも、現象が再現する必要充分なコードを提示よろしくです。>kaさま。
早々のご連絡ありがとうございます。
現状、single.phpに記載しているソースと出力されるhtmlが下記のものとなります。先に書き込ませていただきました現象は下記のものにて出現いたします。
以上、度々お手数おかけいたしますがよろしくお願いいたします。
single.php
<?php get_header() ?> <div id="container"> <div id="content"> <?php the_post() ?> <div id="nav-above" class="navigation"> <div class="nav-previous"><?php previous_post_link( '%link', '<span class="meta-nav">«</span> %title' ) ?></div> <div class="nav-next"><?php next_post_link( '%link', '%title <span class="meta-nav">»</span>' ) ?></div> </div> <div id="post-<?php the_ID() ?>" class="<?php sandbox_post_class() ?>"> <h2 class="entry-title"><?php the_title() ?></h2> <div class="entry-content"> <?php the_content() ?> <div id="ImageBox"> <p id="ProductMainImage"><img src="<?php $image = wp_get_attachment_image_src($正面写真, 'full'); echo $image[0]; ?>" /></p> <ul> <li><a onmouseover="MM_swapImage('photo','<?php $image = wp_get_attachment_image_src($正面写真, 'full'); echo $image[0]; ?>',1)" href="JavaScript:;"><img src="<?php $image = wp_get_attachment_image_src($正面写真, 'full'); echo $image[0]; ?>" /></a></li> <li><a onmouseover="MM_swapImage('photo','<?php $image = wp_get_attachment_image_src($左面写真, 'full'); echo $image[0]; ?>',1)" href="JavaScript:;"><img src="<?php $image = wp_get_attachment_image_src($左面写真, 'full'); echo $image[0]; ?>" /></a></li> <li><a onmouseover="MM_swapImage('photo','<?php $image = wp_get_attachment_image_src($右面写真, 'full'); echo $image[0]; ?>',1)" href="JavaScript:;"><img src="<?php $image = wp_get_attachment_image_src($右面写真, 'full'); echo $image[0]; ?>" /></a></li> <li><a onmouseover="MM_swapImage('photo','<?php $image = wp_get_attachment_image_src($背面写真, 'full'); echo $image[0]; ?>',1)" href="JavaScript:;"><img src="<?php $image = wp_get_attachment_image_src($背面写真, 'full'); echo $image[0]; ?>" /></a></li> </ul> </div> <!-- 画像出力テスト --> <?php $正面写真 = get_post_meta($post->ID, '正面写真', true); echo wp_get_attachment_image($正面写真, 'full'); ?> <?php $左面写真 = get_post_meta($post->ID, '左面写真', true); echo wp_get_attachment_image($左面写真, 'full'); ?> <?php $右面写真 = get_post_meta($post->ID, '右面写真', true); echo wp_get_attachment_image($右面写真, 'full'); ?> <?php $背面写真 = get_post_meta($post->ID, '背面写真', true); echo wp_get_attachment_image($背面写真, 'full'); ?> <!-- 画像出力テスト END --> <?php wp_link_pages('before=<div class="page-link">' . __( 'Pages:', 'sandbox' ) . '&after=</div>') ?></div> </div><!-- .post --> <!-- Next Back --> <div id="nav-below" class="navigation"> <div class="nav-previous"><?php previous_post_link( '%link', '<span class="meta-nav">«</span> %title' ) ?></div> <div class="nav-next"><?php next_post_link( '%link', '%title <span class="meta-nav">»</span>' ) ?></div> </div> <!-- Next Back End --> </div><!-- #content --> </div><!-- #container --> <?php get_sidebar() ?> <?php get_footer() ?>
※SandBoxというテンプレートを元に編集しております。
※<div id=”ImageBox”>から<!– 画像出力テスト END –>までが当方で記述したコードです。html
<body class="wordpress y2010 m01 d08 h11 single postid-3 s-y2010 s-m01 s-d08 s-h18 s-category-%e6%9c%aa%e5%88%86%e9%a1%9e s-author-admin loggedin"> <div id="wrapper" class="hfeed"> <div id="header"> <h1 id="blog-title"><span><a href="http://hogehoge.com/wp/" title="WordPress" rel="home">WordPress</a></span></h1> <div id="blog-description">Just another WordPress weblog</div> </div><!-- #header --> <div id="access"> <div class="skip-link"><a href="#content" title="Skip to content">Skip to content</a></div> <div id="menu"><ul><li class="page_item page-item-2"><a href="http://hogehoge.com/wp/?page_id=2" title="紹介">紹介</a></li></ul></div> </div><!-- #access --> <div id="container"> <div id="content"> <div id="nav-above" class="navigation"> <div class="nav-previous"><a href="http://hogehoge.com/wp/?p=1" rel="prev"><span class="meta-nav">«</span> Hello world!</a></div> <div class="nav-next"></div> </div> <div id="post-3" class="hentry p1 post publish author-admin category-%e6%9c%aa%e5%88%86%e9%a1%9e untagged y2010 m01 d08 h18"> <h2 class="entry-title">テストエントリー</h2> <div class="entry-content"> <p>ここにコメント</p> <div id="ImageBox"> <p id="ProductMainImage"> <img src="" /> </p> <ul> <li><a onmouseover="MM_swapImage('photo','',1)" href="JavaScript:;"><img src="" /></a></li> <li><a onmouseover="MM_swapImage('photo','',1)" href="JavaScript:;"><img src="" /></a></li> <li><a onmouseover="MM_swapImage('photo','',1)" href="JavaScript:;"><img src="" /></a></li> <li><a onmouseover="MM_swapImage('photo','',1)" href="JavaScript:;"><img src="" /></a></li> </ul> </div> <!-- 画像出力テスト --> <img width="450" height="677" src="http://hogehoge.com/wp/wp-content/uploads/2010/01/image01.jpg" class="attachment-full" alt="" title="image01" /><img width="450" height="677" src="http://hogehoge.com/wp/wp-content/uploads/2010/01/image02.jpg" class="attachment-full" alt="" title="image02" /><img width="450" height="677" src="http://hogehoge.com/wp/wp-content/uploads/2010/01/image03.jpg" class="attachment-full" alt="" title="image03" /><img width="450" height="677" src="http://hogehoge.com/wp/wp-content/uploads/2010/01/image04.jpg" class="attachment-full" alt="" title="image04" /><!-- 画像出力テスト --> </div> </div><!-- .post -->
※ヘッダやサイトバーのソースは省いております。
<div id="ImageBox">
〜</div>
で使用されている
$正面写真,$左面写真,$右面写真,$背面写真に値が代入されてないです。あと、$漢字 な変数名はアレなので
$front_pic, $left_pic, $right_pic, $back_pic
とかなんとかに変更した方が良い感じです。kzさま。
ありがとうございます。
$正面写真,$左面写真,$右面写真,$背面写真に値が代入されてないです。
値の代入というのがよく解らず調べてみまして、
&image[0] の0の箇所にwp_get_attachment_image_srcで取得した値を入れなければ
と解釈したのですが正しいでしょうか。で、代入の方法について調べてみて代入する関数(?)がわからず$Keyをそのまま入れてみた所だめでした・・・
大変お手数なのですが、値の代入方法について改めてお教えいただけませんでしょうか。
あと、$漢字 な変数名はアレなので
そうですね!英字変更にしました。
とりあえず全角文字にしておいて動作したので放置してました。以上、よろしくお願いいたします。
値の代入というのがよく解らず調べてみまして、
3個前の返信で言うと
<!-- 画像出力テスト --> <?php $正面写真 = get_post_meta($post->ID, '正面写真', true);
これが「$正面写真 に投稿のカスタムフィールド ‘正面写真’ の値を代入」してます。
でも、
wp_get_attachment_image_src($正面写真, 'full')
の時点では、$正面写真 を使っているにも関わらず、$正面写真 がどんな値なのか
代入していません。なので「指定してくれないと何を出力すれば良いのかWordPressにもわからない」ため
何も出力されないというわけです。まとめると
wp_get_attachment_image_src($正面写真, 'full')
wp_get_attachment_image_src($左面写真, 'full')
などより前に
<?php $正面写真 = get_post_meta($post->ID, '正面写真', true); ?>
<?php $左面写真 = get_post_meta($post->ID, '左面写真', true); ?>
などを書いておく必要があります。kzさま。
ありがとうございました!上手い具合にURLだけ表示させることができました!
<?php $Front_Image = get_post_meta($post->ID, 'Front_Image', true); ?><?php $Front_Image = wp_get_attachment_image_src($Front_Image, 'full'); echo $Front_Image[0]; ?>
もうちょっとシンプルな書き方もできるのかな・・・とおもいつつも、
その辺りは以降勉強しながら改善していこうと思います。本当にありがとうございました!
- トピック「画像URLの取得 wp_get_attachment_image_src」には新たに返信することはできません。