私は本当にこれがfacepalmの瞬間であることを望みます、b/c私はこれに不満を感じています。特定の添付ファイル画像を表示するためのクイックループを作成します。それをコーデックスからほぼまっすぐ引き上げましたが、wp_get_attachment_image()は思ったように動作しません。
wp_get_attachment_imageのID部分は添付ファイルのIDではありませんか?添付ファイルの投稿IDと同じではありませんか。
$args = array(
'post_type' => 'attachment',
'post_mime_type' => array('image','image/jpeg','image/png','image/gif'),
'numberposts' => 5,
'order' => 'ASC',
'orderby' => 'post_title'
);
$attachments = get_posts( $args );
if ( $attachments ) {
foreach ( $attachments as $attachment ) {
echo wp_get_attachment_image( $attachment->ID, 'full' , true);
echo '<p>' . $attachment->post_title . '</p>';
}
}
投稿のタイトルは印刷されますが、画像は印刷されません。
編集1:はい私は間違いなくget_postsで投稿を得ています
もう少しデバッグする:
$attachments = get_posts( $args );
if ( $attachments ) {
foreach ( $attachments as $attachment ) {
$image= wp_get_attachment_image( $attachment->ID, 'thumbnail' , false, array( 'id' => $attachment->ID ));
echo $image;
print_r(wp_get_attachment_image_src( $attachment->ID, 'thumbnail' , false, array( 'id' => $attachment->ID )));
echo var_export($image);
echo '<p>' . $attachment->post_title . '</p>';
}
}
}
これを返します:
Array ( [0] => http://localhost/multi/wp-content/uploads/2011/11/FabricColllFabrics-150x150.jpg [1] => 100 [2] => 100 [3] => 1 )
false
FabricColllFabrics
最初の画像は... wp_get_attachment_image_srcは正しくソースを見つけていますが、wp_get_attachment_imageは明らかにfalseを返していますか?
編集2:そしてPalmが待っていた顔があります
ある時点で私は何かをデバッグしていたに違いありませんし、誰が私が何を理由にしたのか知っています。
function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false) {
return false;
wp_get_attachment_imageの最初の部分
これはすべてlocalhostのもので、私はたいていコアをハックしませんが、ある時点で私はおそらく何かをバックトレースしようとしていて自分の後で片付けを忘れていたと思います。叙事詩は失敗します。
解決策:Palmが待っていた顔
ある時点で私は何かをデバッグしていたに違いありませんし、誰が私が何を理由にしたのか知っています。
function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false) {
return false;
wp_get_attachment_imageの最初の部分
これはすべてlocalhostのもので、私はたいていコアをハックしませんが、ある時点で私はおそらく何かをバックトレースしようとしていて自分の後で片付けを忘れていたと思います。叙事詩は失敗します。
明らかに$attachments = get_posts()
のデータが返されています。そうでなければ、$attachment->post_title
を出力することはできません。ですので、問題はあなたのwp_get_attachment_image()
呼び出しに伴うべきです。
最初に確認することは、$icon
パラメーターをtrue
に設定するのはなぜですか。このパラメータは、実際の添付画像の代わりに、MIMEタイプのアイコンを出力することを目的としています。これをfalse
に設定してみてください(またはfalse
がデフォルトなので、パラメーターを完全に省略してください)。
それ以外では、これはロングショットですが、full
を省略して、wp_get_attachment_image()
にデフォルトの画像サイズthumbnail
を出力させます。
var_export()
の結果$image = wp_get_attachment_image( $attachment->ID, 'full' , true);
を取得してstring(0)
を取得した場合は、画像が受信されなかったため、単にスキップします。
4番目の引数を配列としてwp_get_attachment_image()
に追加するだけです:array( 'id' => $attachment->ID )
;そして、functions.phpファイルで次のことを試してください。
function debug_img_atts( $attr, $attachment )
{
echo '<pre>';
var_dump( $attr );
var_dump( $attachment );
echo '<pre>';
}
add_filter( 'wp_get_attachment_image_attributes', 'debug_img_atts', 20, 2 );
そしてあなたのIDがあなたの添付ファイルからのものであるかどうかを確認してください。
別の問題はあなたの画像サイズが登録されていないことです。デフォルトの画像サイズは「サムネイル」です。 3番目の引数を空のままにしてから、functions.phpにadd_theme_support( 'post-thumbnails' );
を使用して、出力が得られるかどうかを確認してください。
var_dump( wp_get_attachment_image_src( $attachment->ID ) );
を使うこともできます
最後の解決策は、post_mime_type
パラメータを省略し、実際の添付ファイルがどのMIMEタイプであるかを確認してからクエリに戻すことです。調べるには var_dump( get_post_mime_type( $attachment->ID ) );
を使ってください