Site-wide widgets on WordPress
Squarespace, Wix and Webflow all have a single box labelled something like “footer code” that puts a script on every page. WordPress does not — core has never shipped one, which is why every tutorial you find recommends a different plugin. You do not need one. A widget that floats over the page can go into a footer template part on a block theme, a Custom HTML widget in a footer widget area on a classic theme, or a two-line `wp_footer` hook in a child theme. All three run the snippet once per page view on every page of the site, and none of them adds anything you have to keep updated. The one thing to avoid is editing a parent theme's files: the next theme update overwrites them and the widget disappears with no obvious cause.
Build and style the widget in the Zyff widget builder, then follow the WordPress steps below to put it on every page.
How to add a site-wide widget to WordPress
Build the widget and copy the code
In any Zyff widget builder — the chat button, the popup, the announcement bar, the back-to-top button — set it up and copy the embed code. It is one <div> and one <script> tag, and for a floating widget the div can sit anywhere in the page because the widget positions itself.
On a block theme, edit the footer template part
Go to Appearance > Editor > Patterns > Template Parts > Footer. Add a Custom HTML block at the very bottom and paste the snippet in. Because the footer part is shared by every template, the widget now loads everywhere. Save, then check the live site rather than the editor.
On a classic theme, use a footer widget area
Go to Appearance > Widgets and find a footer area. Insert a Custom HTML block there and paste the snippet. Check that your theme actually renders that area on every template — some themes drop the footer on landing-page or full-width templates, and the widget will be missing on exactly those pages.
Or hook wp_footer from a child theme
In Appearance > Theme File Editor, with a CHILD theme active, add to functions.php: add_action('wp_footer', function () { ?> ...paste the snippet here... <?php }); This is the most reliable route — wp_footer fires on every front-end page regardless of template — and a child theme survives parent updates.
Purge your cache and check a real page
If you run WP Rocket, W3 Total Cache, LiteSpeed Cache or a host-level cache such as SiteGround, Kinsta or WP Engine, purge it. A cached copy of the old page is the usual reason a freshly added widget does not appear. Then load the site logged out — some caches serve uncached HTML to administrators, so it can look fine to you and be missing for everyone else.
WordPress-specific things worth knowing
There is no Code Injection screen in core
If you are following a tutorial that says “go to Settings > Header and Footer”, that screen belongs to a plugin, not to WordPress. The three routes above need nothing installed.
Never edit a parent theme's functions.php
The next theme update overwrites the file and your widget vanishes with no error and no obvious cause. Use a child theme, or use one of the two block/widget routes, which store the snippet as content in the database instead.
WordPress.com gates custom code; WordPress.org does not
Self-hosted WordPress from wordpress.org runs script tags on any host and any plan. WordPress.com strips them below its Business tier, silently, so the widget simply never appears on the Free, Personal or Premium plans.
A footer widget area is not always every page
The widget-area route depends on the theme rendering that area, and plenty of themes hide the footer on a full-width or landing-page template. If the widget is missing on one template and present everywhere else, this is why — switch to the wp_footer route.
Security plugins can strip the script
Wordfence, Sucuri and some managed hosts filter script tags out of post content for non-administrator roles. If the snippet survives when you save but disappears from the saved copy, check the plugin's HTML-filtering settings or use the wp_footer route, which is code rather than content.
It does not count against your plugin list
The whole widget is two lines of HTML and one script served from Zyff. Nothing is installed, so there is no plugin to update, nothing that can conflict after a core release, and nothing extra loaded into wp-admin.
Widgets that belong on every page
Frequently asked questions
How do I add a script to every page in WordPress without a plugin?
Three ways, all built in. On a block theme, add a Custom HTML block to the footer template part under Appearance > Editor. On a classic theme, add a Custom HTML widget to a footer widget area. Or add a wp_footer action in a child theme's functions.php, which is the most reliable of the three because it fires on every front-end page regardless of template.
Where exactly is wp_footer?
It is a hook, not a file. Themes call wp_footer() just before their closing body tag, and anything you attach to it prints there. That makes it the correct place for a floating widget, since the snippet loads after the page content rather than blocking it.
Why does the widget show on some pages and not others?
Almost always the footer widget-area route on a theme that hides the footer for certain templates — full-width pages, landing pages and some page-builder templates commonly drop it. Move to the wp_footer hook, which does not depend on a template rendering a particular area.
Will Elementor or Divi break it?
No. Both have their own HTML element if you want the widget on a single page, and both sit on top of WordPress's normal footer output, so the wp_footer route works underneath them. Elementor also has its own site-wide Custom Code screen on Pro, which works too.
Do I need the Business plan on WordPress.com?
For custom code, yes — WordPress.com strips script tags below that tier and does so silently. This does not apply to self-hosted WordPress from wordpress.org, which runs the snippet on any host and any plan.
I pasted it and nothing happened. What now?
Purge every cache you run, then load the page logged out — many caching setups serve uncached HTML to administrators, so a missing widget looks fine to you. If it is still absent, view the page source and search for zyff: if the script tag is not there, something stripped it, and if it is there, open the browser console for a warning.