Adds an accessible floating menu (or mobile bottom bar) of quick-action buttons to your WordPress site. Requires WordPress 6.0+ and PHP 7.4+ (tested to PHP 8.5). By 007AJ.
Need help? See Getting support for how to contact us.
No account or external service is needed. The plugin never contacts other servers.
Found at Floating Menu > Setup wizard (you can re-run it any time from Settings).
Click Create my menu to open the builder, or Skip the wizard.
Go to Floating Menu > Menus. You can have any number of menus: the list shows each menu's status, position and where it shows, with Edit, Duplicate and Delete links. Click Add new menu to create one. Duplicates start disabled.
| Section | What it does |
|---|---|
| General | Menu name (also used as the screen reader label) and Show this menu on the site. A menu is only shown when this is ticked and it has at least one item. |
| Menu items | Build my own items: click + Add item, choose Type, Label, Icon and the value. Use the arrows to reorder and the cross to remove (up to 30 items). Use an existing WordPress menu: pick a menu from Appearance > Menus. Its top-level items become link buttons (link icon, "open in new tab" follows the menu item setting). |
| Position & behaviour | Position, Open/close button (collapse items behind a toggle), Start open, Toggle icon, Labels (Tooltip on hover/focus, Always visible, Screen readers only), Animation. |
| Style | Presets (Indigo, Ocean, Forest, Sunset, Monochrome, Midnight, Chat green) fill the colors and shape in one click. Button color, Icon color, Toggle color, Toggle icon color, Shape (Circle, Rounded square, Square), Button size (32-80 px), Space between buttons (0-40 px), Distance from screen edge (0-120 px). |
| Display rules | See Display rules. |
The Live preview on the right updates as you type. Use Desktop/Mobile to switch the preview frame, and click the preview's toggle to open/close it. Click Save menu to apply.
| Type | Value | Result |
|---|---|---|
| Link | Any URL. Optional "Open in new tab". | Opens the URL. |
| Phone call | Number, e.g. +15551234567 | tel: link. |
| Email address | mailto: link. | |
| Scroll to top | none | Smoothly scrolls to the top (instant if the visitor prefers reduced motion). |
Number with country code, digits only (e.g. 15551234567) + optional Pre-filled message | Opens wa.me chat in a new tab. | |
| Popup (text or shortcode) | Text, HTML or a shortcode, e.g. a contact form shortcode | Opens an accessible dialog. Tab and Shift+Tab cycle only through the visible, enabled controls in the popup; Escape, the close button or a backdrop click closes it and focus returns to the button that opened it. |
| Copy page link | none | Copies the current page URL and shows "Link copied". |
| Share page | none | Opens the device share sheet; falls back to copying the link. |
Icons are bundled inline SVGs (30 icons). Nothing is loaded from a CDN.
Animations: Fade, plus None, Slide, Pop and Stagger. All animation is disabled for visitors with "reduce motion" turned on.
| Rule | Options |
|---|---|
| Where | Everywhere; Only on the content selected below; Everywhere except the content selected below. Targets: Front page checkbox, Page/post IDs (comma separated), Category/tag/term IDs (matches the term archive and every post in it), Post types (singular pages and archives). |
| Visitors | Everyone, Logged-in users only, Logged-out visitors only. |
| User roles | Tick roles to limit to them (hides the menu from logged-out visitors). Empty = any. |
| Devices | Desktop and mobile, Desktop only (wider than 768px), Mobile only (768px and narrower). Done with CSS so it works with page caching. |
If several menus match a page, all of them are shown, so give them different positions.
Floating Menu > Click stats shows clicks per button for the last 7, 30, 90 or 365 days. Counts are stored in your own database table (wp_fmb_clicks) as one daily total per button: no cookies, IP addresses or personal data, and no external service. A daily WP-Cron job deletes rows older than the retention set in Settings (default 90 days). Clear stats empties the table. Counts follow button position, so reordering items shifts older counts.
Download export saves all menus and settings as JSON. Import accepts that file (max 500 KB) and has two modes:
| Mode | Menus | Settings |
|---|---|---|
| Add to my existing menus (default) | Imported menus are added as new, disabled menus. Your existing menus are kept. | Not changed. Click stats on/off, Keep stats for and Uninstall stay exactly as they are on this site. |
| Replace everything | All menus are replaced by the menus in the file (their on/off state is kept). | Click stats on/off and Keep stats for are taken from the file. The Uninstall preference is kept as it is on this site unless you also tick Also import the Uninstall preference. |
Warning: if you tick Also import the Uninstall preference and the file has "Delete all menus, settings and stats when the plugin is deleted" turned on, deleting the plugin later will permanently remove all menus, settings and click stats. After importing, check Settings > Uninstall.
Only administrators (manage_options) can access the plugin screens.
<nav> landmark labelled with the menu name, real <a> and <button> elements, aria-expanded/aria-controls on the toggle, Escape to close, visible focus outlines, hidden items removed from tab order.The menu does not show. Check "Show this menu on the site" is ticked, the menu has items, and the display rules match the page (try Everywhere / Everyone). Clear any page cache.
It covers my chat widget / cookie bar. Change the position or increase "Distance from screen edge".
Developers: filter fmb_active_menus receives the menus about to be displayed on the current request.
If something does not work as described, or you have a question about the plugin, please contact the 007AJ team. Check the FAQ first, as it covers the most common issues.
Please do not send passwords or other login details in a first message. If we need access to your site to investigate, we will ask and explain how to share it safely.
1.0.3 Accessibility: the popup focus trap now only uses controls that can really be reached with Tab (hidden inputs, disabled controls, negative tabindex and hidden elements are skipped, and the list is rebuilt on every Tab press). Empty popups focus the dialog itself; closing returns focus to the opening button.
1.0.2 Fixed: the front-end script now starts once the page is ready and the menu is printed before footer scripts, so toggle, Escape, popups, copy, share, scroll to top and click stats work on WordPress 6.0-6.2 and current versions. Fixed: "Add to my existing menus" imports no longer change your settings. "Replace everything" imports click stats settings, and the Uninstall preference only with a separate, clearly labelled checkbox.
1.0.1 Added a Getting support section to the documentation with contact links and instructions for submitting a request. Added a Get support button to the Documentation screen.
1.0.0 First release.