Custom rewrite after the default term link URL

(Revised answer)

So Let’s See The Issues With Your Rewrite Rule..

  1. The first parameter passed to add_rewrite_rule() (which is the regular expression pattern) should not start with home_url() or any functions which outputs the website URL. So this is wrong:

    home_url() . '/car/([^/]*)/([^/]*)/?'
    

    because the generated regular expression (RegEx) pattern would be:

    http://example.com/car/([^/]*)/([^/]*)/?
    

    which will never be matched, because the request (see WP::$request) never starts with the website URL. And it doesn’t even start with /.

  2. Is the &model=$matches[1] part a typo?

    index.php?taxonomy=car&term=$matches[1]&model=$matches[1]&trim=$matches[2]
    

Now The Fixes

  1. The home_url() . '/car/([^/]*)/([^/]*)/?' should be (no trailing / at the start):

    '^car/([^/]*)/([^/]*)/?'
    
  2. The index.php?taxonomy=car&term=$matches[1]&model=$matches[1]&trim=$matches[2] should probably be without the &model=$matches[1]:

    index.php?taxonomy=car&term=$matches[1]&trim=$matches[2]
    

    However, even with that &model=$matches[1], the rule actually worked in my case.

  3. And not sure if you’ve already added this somewhere in your code, but I’d add it so that I could get the value of the “trim” parameter in the URL:

    add_rewrite_tag( '%trim%', '([^/]+)' );
    

    You’d add that before/after the add_rewrite_rule() line, and to get the “trim” value, you could use get_query_var( 'trim' ).