'Remove cpt slug and add custom taxonomy in url

I need to change the custom post type url, this code works it but is also affecting other cpts causing 404 in all other cpt, how can I make it only for the one I need. Here is my code

// Rewrite urls of resources and put category on url
function change_custom_post_link( $post_link, $id = 0 ){
    $post = get_post($id);  
    if ( is_object( $post ) ){
        $terms = get_the_terms( $post->ID, 'resource_type' );
        
        if(get_post_type($post->ID) == 'resource' ) {
            if( $terms ){
                return home_url( "/".$terms[0]->slug."/".$post->post_name );
            }else{
                return home_url( "/resource/".$post->post_name );
            }
        }
    }
    return $post_link;  
}
add_filter( 'post_type_link', 'change_custom_post_link', 1, 3 );

and this is the rewrite

function resource_rewrite_rules() {
    add_rewrite_rule(
        '^(.*)/(.*)/?$',
        'index.php?post_type=resource&name=$matches[2]',
        'top'
    );
}
add_action( 'init', 'resource_rewrite_rules' );


Solution 1:[1]

Why are you doing this? That's too tricky.

You may use this plugin to create and modify CPT: CPT plugin WordPress

Or refer to docs: https://developer.wordpress.org/reference/functions/register_post_type/

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 gtamborero