WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Платформа для конвертации и монетизации трафика
функция не описана

acf_get_attachment() ACF 5.1.5

Returns an array of attachment data.

Хуки из функции
Возвращает

Массив/false.

Использование

acf_get_attachment( $attachment );
$attachment (обязательный)
-

Список изменений

С версии 5.1.5 Введена.

Код acf_get_attachment() ACF 5.9.1

<?php
function acf_get_attachment( $attachment ) {
	
	// Allow filter to short-circuit load attachment logic.
	// Alternatively, this filter may be used to switch blogs for multisite media functionality. 
	$response = apply_filters( "acf/pre_load_attachment", null, $attachment );
	if( $response !== null ) {
		return $response;
	}

	// Get the attachment post object.
	$attachment = get_post( $attachment );
	if( !$attachment ) {
		return false;
	}
	if( $attachment->post_type !== 'attachment' ) {
		return false;
	}
	
	// Load various attachment details.
	$meta = wp_get_attachment_metadata( $attachment->ID );
	$attached_file = get_attached_file( $attachment->ID );
	if( strpos( $attachment->post_mime_type, '/' ) !== false ) {
		list( $type, $subtype ) = explode( '/', $attachment->post_mime_type );
	} else {
		list( $type, $subtype ) = array( $attachment->post_mime_type, '' );
	}

	// Generate response.
	$response = array(
		'ID'			=> $attachment->ID,
		'id'			=> $attachment->ID,
		'title'       	=> $attachment->post_title,
		'filename'		=> wp_basename( $attached_file ),
		'filesize'		=> 0,
		'url'			=> wp_get_attachment_url( $attachment->ID ),
		'link'			=> get_attachment_link( $attachment->ID ),
		'alt'			=> get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
		'author'		=> $attachment->post_author,
		'description'	=> $attachment->post_content,
		'caption'		=> $attachment->post_excerpt,
		'name'			=> $attachment->post_name,
        'status'		=> $attachment->post_status,
        'uploaded_to'	=> $attachment->post_parent,
        'date'			=> $attachment->post_date_gmt,
		'modified'		=> $attachment->post_modified_gmt,
		'menu_order'	=> $attachment->menu_order,
		'mime_type'		=> $attachment->post_mime_type,
        'type'			=> $type,
        'subtype'		=> $subtype,
        'icon'			=> wp_mime_type_icon( $attachment->ID )
	);
	
	// Append filesize data.
	if( isset($meta['filesize']) ) {
		$response['filesize'] = $meta['filesize'];
	} elseif( file_exists($attached_file) ) {
		$response['filesize'] = filesize( $attached_file );
	}
	
	// Restrict the loading of image "sizes".
	$sizes_id = 0;

	// Type specific logic.
	switch( $type ) {
		case 'image':
			$sizes_id = $attachment->ID;
			$src = wp_get_attachment_image_src( $attachment->ID, 'full' );
			$response['url'] = $src[0];
			$response['width'] = $src[1];
			$response['height'] = $src[2];
			break;
		case 'video':
			$response['width'] = acf_maybe_get( $meta, 'width', 0 );
			$response['height'] = acf_maybe_get( $meta, 'height', 0 );
			if( $featured_id = get_post_thumbnail_id( $attachment->ID ) ) {
				$sizes_id = $featured_id;
			}
			break;
		case 'audio':
			if( $featured_id = get_post_thumbnail_id( $attachment->ID ) ) {
				$sizes_id = $featured_id;
			}	
			break;
	}

	// Load array of image sizes.
	if( $sizes_id ) {
		$sizes = get_intermediate_image_sizes();
		$data = array();
		foreach( $sizes as $size ) {
			$src = wp_get_attachment_image_src( $sizes_id, $size );
			$data[ $size ] = $src[ 0 ];
			$data[ $size . '-width' ] = $src[ 1 ];
			$data[ $size . '-height' ] = $src[ 2 ];
		}
		$response['sizes'] = $data;
	}
	
	/**
	 * Filters the attachment $response after it has been loaded.
	 *
	 * @date	16/06/2020
 	 * @since	5.9.0
	 *
	 * @param	array $response Array of loaded attachment data.
     * @param	WP_Post $attachment Attachment object.
     * @param	array|false $meta Array of attachment meta data, or false if there is none.
	 */
	return apply_filters( "acf/load_attachment", $response, $attachment, $meta );
}