One snippet, hooked to the front end of your theme. Your posts, pages, menus and WooCommerce products read in every language you turn on, and the WordPress admin is left out of it on purpose.
wordpress.org kind) and an administrator login.
Open your site in the Verbafy dashboard and copy the embed snippet. It carries your own site id and public key.
<script
src="https://cdn.verbafy.app/widget.js"
data-site-id="site_abc123"
data-api-key="pk_live_your_key"
></script>
Put this in your child theme's functions.php, or in a code snippets plugin set to run on the front end. Paste your own snippet in place of the one below.
add_action( 'wp_footer', function () {
if ( is_admin() ) {
return;
}
?>
<script
src="https://cdn.verbafy.app/widget.js"
data-site-id="site_abc123"
data-api-key="pk_live_your_key"
></script>
<?php
} );
Nothing to build and no cache to prime. If you run a page cache, clear it once so the new footer is served.
Keep it off your admin
wp_footer is the front-end hook: WordPress' own reference describes it as printing scripts “before the closing body tag on the front end”. It is not quite exclusive, though. Since WordPress 5.8 it also fires on the block-based Widgets screen, which is an admin page. The is_admin() guard closes that gap. Without it, every editor opening that screen would translate your back office and spend your monthly word allowance on pages no customer ever sees.
/wp-admin. There should be no switcher there. If there is, the is_admin() guard is missing.
Shop, category, product, cart and checkout are front-end pages rendered by your theme, so the same hook covers them. Prices, variation names and anything WooCommerce swaps in with JavaScript after the page loads are picked up as they appear.
The snippet is the same HTML for every visitor, so it caches like the rest of your footer. The translation itself happens in the visitor's browser, after the cached page arrives.
A block theme has no footer.php, but it still calls wp_footer(). The hook is the contract, not the template file.
Steps taken from WordPress's own documentation
Read on 11 October 2026. Platforms move their menus; if a step no longer matches, their page is the one to trust.