Skip to content

Instantly share code, notes, and snippets.

@seothemes
Created December 18, 2017 10:55
Show Gist options
  • Save seothemes/a51f02d7b3736956706c43bf04bde236 to your computer and use it in GitHub Desktop.
Save seothemes/a51f02d7b3736956706c43bf04bde236 to your computer and use it in GitHub Desktop.
Get an attachment ID given a URL
<?php
/**
* Get an attachment ID given a URL.
*
* @param string $url URL to check.
*
* @return int Attachment ID on success, 0 on failure.
*/
function get_attachment_id( $url ) {
$attachment_id = 0;
$dir = wp_upload_dir();
// Is URL in uploads directory?
if ( false !== strpos( $url, $dir['baseurl'] . '/' ) ) {
$file = basename( $url );
$query_args = array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'fields' => 'ids',
'meta_query' => array(
array(
'value' => $file,
'compare' => 'LIKE',
'key' => '_wp_attachment_metadata',
),
),
);
$query = new WP_Query( $query_args );
if ( $query->have_posts() ) {
foreach ( $query->posts as $post_id ) {
$meta = wp_get_attachment_metadata( $post_id );
$original_file = basename( $meta['file'] );
$cropped_image_files = wp_list_pluck( $meta['sizes'], 'file' );
if ( $original_file === $file || in_array( $file, $cropped_image_files ) ) {
$attachment_id = $post_id;
break;
}
}
}
}
return $attachment_id;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment