当前浏览:首页 / WordPress函数 / wp_get_attachment_image_src()

wp_get_attachment_image_src( int $attachment_id, string|int[] $size = 'thumbnail', bool $icon = false )

检索图片附件

attachment 附件more...

imagemore...


参数

$attachment_id

(int) (必填) 图片附件ID。

$size

(string|int[]) (可选) 图片尺寸。接受任何注册的图像尺寸名称,或以像素为单位的宽度和高度值数组(按该顺序)。

默认值: 'thumbnail'

$icon

(bool) (可选) 图片是否应返回到mime类型图标。

默认值: false


返回

(array|false) 图片数据的数组,如果没有可用的图像,则为false。

  • (string) 图片资源 URL
  • '1'
    (int) 图像宽度(px)
  • '2'
    (int) 图像高度(px)
  • '3'
    (bool) 是否是调整过尺寸的图片。


源码

查看源码 官方文档


更新日志

版本描述
2.5.0开始引入

使用示例

  • 示例1

    #return部分提供键,但函数仅返回索引。我们应该弄清楚这个函数返回了什么。和一些描述或链接来解释is_intermediate

    array{
    	[0] => url,
    	[1] => width</em>
    	[2] => height</em>
    	[4] => is_intermediate
    }
    
  • 示例2

    默认用法

    $image_attributes = wp_get_attachment_image_src( $attachment_id = 8 );
    if ( $image_attributes ) : ?>
    	<img src="<?php echo $image_attributes[0]; ?>" width="<?php echo $image_attributes[1]; ?>" height="<?php echo $image_attributes[2]; ?>" />
    <?php endif; ?>
    
  • 示例3

    显示与文章相关的第一个图像
    此函数检索与文章相关的第一个图像。

    /**
     * Output a post's first image.
     *
     * @param int $post_id Post ID.
     */
    function wpdocs_echo_first_image( $post_id ) {
    	$args = array(
    		'posts_per_page' => 1,
    		'order'          => 'ASC',
    		'post_mime_type' => 'image',
    		'post_parent'    => $post_id,
    		'post_status'    => null,
    		'post_type'      => 'attachment',
    	);
    
    	$attachments = get_children( $args );
    
    	if ( $attachments ) {
    		echo '<img src="' . wp_get_attachment_thumb_url( $attachments[0]->ID ) . '" class="current">';
    	}
    }
    
  • 示例4

    要在函数wp_get_attachment_image_src中获取原始尺寸的URL图像,请使用:

    $img_atts = wp_get_attachment_image_src($IMG_ID, 'full');
    <img src="<?php echo $img_atts[0]; ?>"
    
  • 示例5

    如果这些图标可用,WordPress可以使用媒体图标来表示博客和管理界面上的附件文件
    对于图像,它返回缩略图。对于其他媒体类型,它会在目录wp-includes/images/crystal/中查找按媒体类型命名的图像文件(例如audio.jpg)。

    此示例显示了如何将此目录更改为主题wp-content/themes/yourtheme/images中名为“images”的文件夹。创建文件夹并将“媒体类型图像”放入其中。要告诉WordPress目录已更改,请将其放入当前主题的functions.php文件中:

    add_filter( 'icon_dir', 'wpdocs_theme_icon_directory' );
    add_filter( 'icon_dir_uri', 'wpdocs_theme_icon_uri' );
    
    /*
     * Return my desired icon directory
     */
    function wpdocs_theme_icon_directory( $icon_dir ) {
    	return get_stylesheet_directory() . '/images';
    }
    
    /*
     * Return my desired icon URI
     */
    function wpdocs_theme_icon_uri( $icon_dir ) {
    	return get_stylesheet_directory_uri() . '/images'; 
    }
    
  • 示例6

    如果存在缩略图,则检索尺寸为220的文章缩略图url。

    $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => 5, 'numberposts' => 5 );
    
    $posts = get_posts( $args );
    
    foreach($posts as $post) {
    	$thumbnail_url = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), array('220','220'), true );
    	$thumbnail_url = $thumbnail_url[0];
    	echo ( !empty($thumbnail_url) ) ? $thumbnail_url : 'No thumb!';
    }
    
  • 示例7

    本页的几条笔记提到了在基于get_children的帖子中获得第一张图像。不幸的是,如果你使用的是古腾堡编辑器,这将不起作用。要从基于古腾堡的文章中获得第一个图像,需要解析这些块。这里有一个函数,它将返回post中第一个图像的ID,如果没有,则返回null

    function first_image_in_blocks( $id ) {
        $post = get_post( $id );
        $blocks = parse_blocks( $post->post_content );
    
        // Get all blocks that have a core/image blockName
        $images = array_filter( $blocks, function( $block ) {
            return 'core/image' === $block['blockName'];
        } );
    
        // If there are any images, get the id from the first image, otherwise
        // return null
        return count( $images ) > 0 ? $images[0]['attrs']['id'] : null;
    }
    
  • 示例8

    这是我的代码,用于仅从文章附件创建自定义库(我在指定类别的“singl.php”中使用它)

    <!-- begin gallery -->
    <?php  if  ( get_the_category()[0]->slug == 'gallery' )  {     ?>
    <div class="gallery" id ='lightgallery' >
    <?php $attachments = get_posts( array(  'post_type'  => 'attachment', 'post_parent' => $post->ID ) );
    if ( $attachments ) {
    foreach ( $attachments as $post ) {
    echo '<a href="'.wp_get_attachment_image_src( $post->ID, 'full' )[0].'">'  ;
    echo  '<img  src="'.wp_get_attachment_image_src( $post->ID )[0].'"  >  </a>';  
     }
     wp_reset_postdata();
     }  ?>
    </div>
    <?php   }    ?> 
    <!-- End gallery -->
  • 示例9

    函数返回:

    array (size=4)
      0 => string 'http://example.com/wp-content/uploads/2017/11/image-name-150x150.jpg' (length=72)
      1 => int 150
      2 => int 150
      3 => boolean true