i also run into this problem an found out that the internal function “z_get_attachment_id_by_url” doesnt return any result and the full image src is the fallback in that case.
so i modified that function with code i found here: https://frankiejarrett.com/2013/05/get-an-attachment-id-by-url-in-wordpress/
result in /wp-content/plugins/categories-images/categories-images.php at line 170
function z_get_attachment_id_by_url($image_src) {
// Split the $url into two parts with the wp-content directory as the separator
$parsed_url = explode( parse_url( WP_CONTENT_URL, PHP_URL_PATH ), $image_src );
// Get the host of the current site and the host of the $url, ignoring www
$this_host = str_ireplace( 'www.', '', parse_url( home_url(), PHP_URL_HOST ) );
$file_host = str_ireplace( 'www.', '', parse_url( $image_src, PHP_URL_HOST ) );
// Return nothing if there aren't any $image_src parts or if the current host and $url host do not match
if ( ! isset( $parsed_url[1] ) || empty( $parsed_url[1] ) || ( $this_host != $file_host ) ) {
return NULL;
}
// Now we're going to quickly search the DB for any attachment GUID with a partial path match
// Example: /uploads/2013/05/test-image.jpg
global $wpdb;
$attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->prefix}posts WHERE guid RLIKE %s;", $parsed_url[1] ) );
// Returns null if no attachment is found
$id = $attachment[0];
return (!empty($id)) ? $id : NULL;
}
now it does work for me – a plugin update with that fixed wouldt be great.