block_core_gallery_dynamic_image_link_attributes()WP 7.0.0

Builds the link-related image block attributes for a dynamically rendered gallery image, mapping the gallery-wide linkTo setting onto a single image.

Mirrors the editor's getHrefAndDestination() (see gallery/utils.js).

No Hooks.

Returns

array. Partial image block attributes (href, linkDestination, linkTarget, rel, lightbox).

Usage

block_core_gallery_dynamic_image_link_attributes( $attachment_id, $attributes );
$attachment_id(int) (required)
The image attachment ID.
$attributes(array) (required)
The gallery block attributes.

Changelog

Since 7.0.0 Introduced.

block_core_gallery_dynamic_image_link_attributes() code WP 7.1

function block_core_gallery_dynamic_image_link_attributes( $attachment_id, $attributes ) {
	$link_to = $attributes['linkTo'] ?? 'none';
	$attrs   = array();

	switch ( $link_to ) {
		// Gutenberg uses 'media'/'attachment'; WP Core uses 'file'/'post'.
		case 'media':
		case 'file':
			$attrs['href']            = wp_get_attachment_url( $attachment_id );
			$attrs['linkDestination'] = 'media';
			break;
		case 'attachment':
		case 'post':
			$attrs['href']            = get_attachment_link( $attachment_id );
			$attrs['linkDestination'] = 'attachment';
			break;
		case 'lightbox':
			$attrs['linkDestination'] = 'none';
			$attrs['lightbox']        = array( 'enabled' => true );
			break;
	}

	if ( ! empty( $attrs['href'] ) && '_blank' === ( $attributes['linkTarget'] ?? '' ) ) {
		$attrs['linkTarget'] = '_blank';
		$attrs['rel']        = 'noopener';
	}

	return $attrs;
}