Ok this is hard to explain in the heading. But I've made this function in my functions.php
Where i add a title tag to all image links with the image caption. By finding the filename and look it up in the DB, finding the ID and by that getting the correct caption.
Here is the function
add_filter('the_content', 'addshadowboxrel', 12);
add_filter('get_comment_text', 'addshadowboxrel');
function addshadowboxrel ($content) {
global $wpdb;
$pattern = "/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>(.*?)<\/a>/i";
$path = '$3.$4';
$attachment_url = basename($path);
$attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) );
$attachment = get_post( $attachment_id );
$replacement = '<a$1href=$2$3.$4$5 title="'.$attachment->post_excerpt.'" rel="lightbox"$6>$7</a>';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
Everything works: If I replace the $path with the actual path insted of '$3.$4'.
But the basename function dont work as it is here?