Search code examples
wordpresswordpress-themingcustom-post-typecustom-wordpress-pagescustom-fields

Wordpress how to link Custom Post Type directly to a Custom Field instead of the parent post page


I have a Custom Post type with two custom fields - Description and Attachment (to upload file/PDF).

When I complete this Custom Post I want the link to go directly to the attachment rather than the post page. I am using CPT UI and Custom Fields plugins to manage all this.

Does anyone know how I can create a custom post that will go directly to an attachment rather than the post page? I want to be able to display the title of each post on a page and have the title go to the attachment within the post.

I hope this makes sense and any help greatly appreciated!


Solution

  • This example assumes that you are using ACF to create the fields. And the field with the file gives its ID when requested (when creating a field in ACF there is an option to give ID or link)

    add_filter( 'post_type_link', 'custom_post_permalink1', 10, 4 );
    function custom_post_permalink1( $permalink, $post, $leavename, $sample ) {
    
    
        // Change here to your post type name
        if ( $post->post_type == 'your_post_type'  ) {
    
            $post_current_id = $post->ID;
            
            // Change here 'file' to your custom field slug
            if(get_post_meta($post_current_id, "file", true) ): 
            $PDF_ID = get_post_meta($post_current_id, "file", true);
            $PDF_URL = wp_get_attachment_url( $PDF_ID );
            
            $permalink = $PDF_URL;
            endif; 
            
        }
        
       return $permalink;   
    
    }