Using WordPress ‘is_local_attachment()’ PHP function

The is_local_attachment() WordPress PHP function determines whether an attachment URI is local and really an attachment.

Usage

$is_local = is_local_attachment( $url );

Example:

$url = 'https://example.com/wp-content/uploads/2023/05/image.jpg';
$is_local = is_local_attachment( $url );

if ( $is_local ) {
    echo 'This is a local attachment.';
} else {
    echo 'This is not a local attachment.';
}

Parameters

  • $url (string) – Required. URL to check.

More information

See WordPress Developer Resources: is_local_attachment

Examples

Check if an image is a local attachment

This example checks if an image URL is a local attachment and displays a message accordingly.

$image_url = 'https://example.com/wp-content/uploads/2023/05/my-image.jpg';

if ( is_local_attachment( $image_url ) ) {
    echo 'The image is a local attachment.';
} else {
    echo 'The image is not a local attachment.';
}

Display attachment metadata if local

This example checks if a given URL is a local attachment, and if so, displays its metadata.

$attachment_url = 'https://example.com/wp-content/uploads/2023/05/document.pdf';

if ( is_local_attachment( $attachment_url ) ) {
    $attachment_id = attachment_url_to_postid( $attachment_url );
    $attachment_metadata = wp_get_attachment_metadata( $attachment_id );
    print_r( $attachment_metadata );
} else {
    echo 'The document is not a local attachment.';
}

Add a CSS class to local attachments

This example adds a CSS class to local attachment image URLs within an array of URLs.

$image_urls = array(
    'https://example.com/wp-content/uploads/2023/05/image1.jpg',
    'https://example.com/wp-content/uploads/2023/05/image2.jpg',
    'https://external.com/images/image3.jpg'
);

foreach ( $image_urls as $image_url ) {
    if ( is_local_attachment( $image_url ) ) {
        echo "<img src='{$image_url}' class='local-attachment' />";
    } else {
        echo "<img src='{$image_url}' />";
    }
}

Filter an array of URLs for local attachments

This example filters an array of URLs and returns only the local attachment URLs.

$urls = array(
    'https://example.com/wp-content/uploads/2023/05/image1.jpg',
    'https://example.com/wp-content/uploads/2023/05/document.pdf',
    'https://external.com/images/image2.jpg'
);

$local_attachments = array_filter( $urls, 'is_local_attachment' );

print_r( $local_attachments );

Count local attachments in an array of URLs

This example counts the number of local attachment URLs in an array of URLs.

$urls = array(
    'https://example.com/wp-content/uploads/2023/05/image1.jpg',
    'https://example.com/wp-content/uploads/2023/05/document.pdf',
    'https://external.com/images/image2.jpg'
);

$local_attachment_count = count( array_filter( $urls, 'is_local_attachment' ) );

echo "Number of local attachments: {$local_attachment_count}";