I am relatively new to WP-development and have now spent a while reading the docs and playing around but am of the assumption that the way I am trying to solve this problem is much more complicated than it has to be.

The end goal of my 'learning project' at the moment is to either execute an action in the backend if an attachment is opened (think pdf-files), so do something if a pdf-attachment link is clicked or - if that's not possible - manipulate all links to pdf-attachments to include an onClick-event which will in effect AJAX call the same action in the backend.

I had started with the first way but was not able to find an action which fits this scenario so I went on to filters and tried many ways, i.e. finding all links on the page to pdf-attachments and manipulating them, which will give me the correct links and I can manipulate the HTML all I want within my function and echo it out (to the top of the page) but they will not overwrite the one in their original position:

function addAlert($post) {

$attachments = get_children( array (
        'post_parent' => $post->ID,
        'post_type' => 'attachment',
        'post_mime_type' => 'application/pdf'

    if ( empty($attachments) ) {
        // no attachments here
    } else {
        foreach ( $attachments as $attachment_id => $attachment ) {
            $l = wp_get_attachment_link( $attachment_id, '');
            $h = addAlertTrigger($l);
            echo $h;
            return $h;

I have also tried the 'term_link'-filter route:

function add_via_filter( $url, $term, $taxonomy ) {
    $url = home_url() . '?test' . $term->slug;
    return $url;
add_filter( 'term_link', 'add_via_filter', 10, 3 );

which seems to be the wring filter. It works but not on the attachment links...

There has to be something I missed. Would appreciate if someone pointed me in the right direction.


1 Answer 1


This plugin creates custom links to attachments links so this way its possible to set expiry date, permissions etc.

I would suggest you to look at the plugin code, adapt the parts that you looking to custom and add your code. This may save you the time finding and testing the attachments hooks and filters.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.