使用wp_GET_ATTACH_IMAGE()显示附件

时间:2012-03-08 作者:helgatheviking

我真的希望这是一个面对面的时刻,我对此感到沮丧。快速循环以显示某些附件图像。几乎直接从法典中删除了它,但wp\\u get\\u attachment\\u image()的行为与我预期的不同。

wp\\u get\\u attachment\\u映像的ID部分不是附件的ID吗?这与附件的post 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>\';
          }
     }
打印文章标题,但不打印图像。

EDIT 1: 是的,我肯定会通过我的get\\u帖子获得帖子

更多调试:

$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\\u get\\u attachment\\u image\\u src正确地找到了源,但是wp\\u get\\u attachment\\u image显然返回false?

edit 2: 还有我一直在等待的掌心

在某种程度上,我一定是在调试一些东西,谁知道我为什么把

function wp_get_attachment_image_src($attachment_id, $size=\'thumbnail\', $icon = false) {
  return false;
在wp\\u get\\u attachment\\u image的开头

这些都是本地主机的东西,我通常不会在核心进行黑客攻击,但我想在某个时候,我可能在那里试图回溯一些东西,但忘了自己清理。史诗般的失败。

3 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

solution: 我等待的掌心

在某种程度上,我一定是在调试一些东西,谁知道我为什么把

function wp_get_attachment_image_src($attachment_id, $size=\'thumbnail\', $icon = false) {
  return false;
在wp\\u get\\u attachment\\u image的开头

这些都是本地主机的东西,我通常不会在核心进行黑客攻击,但我想在某个时候,我可能在那里试图回溯一些东西,但忘了自己清理。史诗般的失败。

SO网友:Chip Bennett

很明显,您正在获取返回的数据$attachments = get_posts(); 否则,您将无法输出$attachment->post_title. 因此,问题必须与您的wp_get_attachment_image() 呼叫

我要检查的第一件事是:为什么要设置$icon 参数到true? 此参数用于输出mime类型图标,而不是实际的附件图像。尝试将其设置为false (或完全省略参数,因为false 是默认设置)。

除此之外,还有很长的路要走,但试着忽略full, 然后让wp_get_attachment_image() 尝试输出其默认图像大小,thumbnail.

SO网友:kaiser

调试问题:

如果var_export() 的结果$image = wp_get_attachment_image( $attachment->ID, \'full\' , true); 并获得string(0), 然后它只是跳过,因为没有收到图像。

深入调试:

只需将第四个参数作为数组添加到wp_get_attachment_image(): array( \'id\' => $attachment->ID ); 然后在函数中尝试以下操作。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是否是附件中的id。

另一个问题可能是图像大小未注册。默认图像大小为“缩略图”。尝试将第三个参数保留为空,然后使用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 ) ); 检查它

结束

相关推荐

Pull images from the gallery

我正在构建一个模板,wordpress主要用作图像CMS,我从每篇文章的内容部分提取第一幅图像。<img src=\"<?php echo grab_image() ?>\" /> function grab_image() { global $post, $posts; $first_img = \'\'; ob_start(); ob_end_clean(); $output = preg_match_all(\'/&l