I wanted to link images in a gallery to a custom URL.
I know I could add an extra field and do it this way
I found this ticket on Trac, though, that modifies the “Link URL” field to accept custom links. I like how that works and I’d like to make that work.
Trouble is, I can’t seem to figure out how to access the data. I’m using get_children to create an array to loop through. The Link URL is not included in the results.
I’ve tried get_attachment_link – the trouble is, it doesn’t just pull it from the field, the function generates the link itself.
Any ideas? Thanks!
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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='.*?'/", "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 );
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0