Retrieving a custom link on an attachment

On the Trac ticket you’ve linked at the bottom there is a solution to make it work

function _save_attachment_url($post, $attachment) {
    if ( isset($attachment['url']) ) 
        update_post_meta( $post['ID'], '_wp_attachment_url', esc_url_raw($attachment['url']) ); 
    return $post;
}
add_filter('attachment_fields_to_save', '_save_attachment_url', 10, 2);

function _replace_attachment_url($form_fields, $post) {
    if ( isset($form_fields['url']['html']) ) {
        $url = get_post_meta( $post->ID, '_wp_attachment_url', true );
        if ( ! empty($url) )
            $form_fields['url']['html'] = preg_replace( "/value=".*?"https://wordpress.stackexchange.com/", "value="$url"", $form_fields['url']['html'] );
    }
    return $form_fields;
}
add_filter('attachment_fields_to_edit', '_replace_attachment_url', 10, 2);

So after this code you will be able to add your custom links in the “Link URL” field.

And to get it you just need the attachment ID and you can get it with:

get_post_meta( $post->ID, '_wp_attachment_url', true );

Leave a Comment