Skip to main content

📌 Attention to everyone migrating from Thrive Apprentice to FluentCommunity

A brief guide to avoiding duplicate URLs in Google Search Console

If you’re moving your courses from Thrive Apprentice to FluentCommunity, there’s one thing you absolutely need to be aware of:

1. Thrive Apprentice injects a global URL parameter

Thrive Apprentice uses this filter:

add_filter( 'post_link', [ static::class, 'maybe_add_tva_skin_id' ], 10, 2 );

This means that any permalink generated in WordPress can automatically inherit the parameter:

?tva_skin_id=XXXX

Even pages that don’t belong to Apprentice, including FluentCommunity course and lesson routes.

This often leads to:

  • Duplicate URLs
  • /feed/ and chained /feed/feed/ variations
  • Search Console warnings: “Duplicate: user-selected canonical not specified”

2. How to fix it (two clean options)

Option A — If you’re still using Apprentice

Add this filter to your site:

add_filter( 'wp_sitemaps_posts_entry', function( $entry, $post ) {
    $entry['loc'] = remove_query_arg( 'tva_skin_id', $entry['loc'] );
    return $entry;
}, 10, 2 );

This keeps the parameter out of the sitemap and prevents new duplicates.


Option B — If you’re migrating fully to FluentCommunity (recommended)

Do this:

  1. Deactivate and remove Thrive Apprentice
  2. Delete Apprentice’s custom post types, tables and taxonomies
  3. Clean leftover meta entries containing tva_skin_id
  4. Optimize your core tables
  5. Request reindexing in Google Search Console

Once Apprentice is gone, the parameter can no longer be injected : the duplicate URLs stop instantly.


3. Bonus: optional redirect to accelerate cleanup

If you want Google to purge the old URLs faster, add a redirect:

RewriteCond %{QUERY_STRING} (^|&)tva_skin_id=.* [NC]
RewriteRule ^(.*)$ /$1? [L,R=301]

This forces every old Apprentice URL to resolve to a clean canonical version.


Conclusion

If you’re migrating from Thrive Apprentice → FluentCommunity, be aware of the global permalink filter that adds tva_skin_id. Removing Apprentice (or cleaning it properly) eliminates the issue entirely.

Short task, big impact on SEO.

Hope it helps!

Migrating is never easy, but I hope this short guide helps you do so faster and assuring there is no trash-files behind :)

📌 Attention to everyone migrating from Thrive Apprentice to FluentCommunity

Manuel Müller

Jorge de los Reyes love you man ❤️ .... always wondered about the millions of /feed/ variations in my search console (sadly i never addressed it)....

up up an away

Jorge de los Reyes

Manuel Müller
Happy to help, Manuel!

Just don’t forget to clean up all the TVA references in the database: there are thousands of them, and they impact performance because TVA tries to render on any page that used Apprentice elements. 😄

Also keep an eye on the post meta: courses, modules and lessons all store a lot of data there.
And remember that products and courses use taxonomies, so those tables may hold leftover records too.

In short: after removing Apprentice, a full database cleanup is the only safe path.
There’s no “clean uninstall”, and leftover skins/templates can negatively impact SEO.

If you need help spotting what’s safe to remove, just ping me!

Manuel Müller

Jorge de los Reyes took the flamethrower and burned thrive down to ashes!

Jorge de los Reyes

Manuel Müller Not really 🤣

I wasn’t burning Thrive to the ground: just giving my old friend Apprentice a respectful farewell.

I still love their aesthetics. Truly.

But numbers don’t lie: simple layouts convert better.

And the bigger point is the SEO risk I mentioned earlier: if you run Apprentice alongside FluentCommunity without the right “patches,” you can accidentally set your own rankings on fire…

PS.: Dear Manuel, my friend… I think it’s time to update your community username.

I’ve seen WiFi passwords that were easier to type 😂

Artur Abakarov

GIF - how I clear my cache after every sneeze on the website. )