WP Manifestindependent plugin directory
manifest / social / dicebar-wordpress-click-to-call-footer-bar

DiceBar — Mobile Bottom Bar, Click to Call & Chat releases

WordPress click to call button and mobile bottom bar. A sticky footer bar for phones with call, WhatsApp chat, directions and social icons. Free, no tracking, works with any theme, Elementor, Divi and Bricks.

by Dice Codes · github.com/iamramgarhia/dicebar-wordpress-click-to-call-footer-bar · website

1stars
3release downloads
0forks

Install

The author publishes release zips, so WP-CLI can install straight from GitHub:

wp plugin install https://github.com/iamramgarhia/dicebar-wordpress-click-to-call-footer-bar/releases/download/v1.7.0/dicebar.zip

Readme

DiceBar: a frosted glass footer bar on a phone, holding call, chat, directions and share buttons

DiceBar — Mobile Bottom Bar & Click to Call Button for WordPress

A sticky footer bar for phones with a click to call button, a WhatsApp chat button, directions and social icons. Free, no tracking, works with any theme.


Download DiceBar, the latest release   Read the DiceBar documentation



Documentation · Report a bug · Releases


What DiceBar does

DiceBar is a WordPress plugin that adds a mobile bottom bar, also called a sticky footer bar, across the bottom of the screen on phones and tablets. It holds a click to call button, a WhatsApp chat button, directions, email, social media icons, or a link to anywhere on your site.

Most visitors arrive on a phone. On a phone, a phone number in the footer is four scrolls away and a contact form is a wall. A footer bar puts the action under the thumb on every page, which is the whole idea behind a call now button.

Every feature listed here is in the free plugin. There is no locked tier, no advert in your dashboard, and no tracking of any kind.

Features

Click to call button Taps straight into the phone's dialler
WhatsApp chat button Opens a chat, optionally with a message already written
SMS and email buttons With a prefilled body or subject
Directions button Opens the map app with your address searched
Social media icons Thirty networks, optionally in their own brand colours
Link, page, anchor, share, back to top The rest of what a footer bar needs
Four looks Glass, solid, minimal and bold, with adjustable blur and transparency
Icons, words, or both A whole-bar choice, for the reason given below
Nine starter kits Restaurant, clinic, trade, shop, blog, portfolio, social
Live preview The real bar, on a photograph, light or dark, at 320, 375 and 414 px
Shortcode and Elementor widget Put the same row inside any page
Cache-safe Designed for full-page caching rather than patched for it afterwards

Installing

From your dashboard, go to Plugins, then Add New, and search for DiceBar. Or download the archive from the latest release and upload it.

With WP-CLI:

wp plugin install dicebar --activate

Requires WordPress 6.0 or newer and PHP 7.4 or newer. No other dependencies, and no external requests at any point.

Putting the bar inside a page

Most sites need none of this. Install, add your buttons, and the bar is live. This section is only for showing the same row inside your content too.

The bar appears by itself on every page you allow it on. To also show the same row of buttons inside your content, use the shortcode:

[dicebar]

To show only some of the buttons, name them by id:

[dicebar items="itm_a1b2c3d4, itm_e5f6a7b8"]

The shortcode works in the block editor, in widgets, in theme templates, and in Elementor, Divi, Beaver Builder, Bricks and Oxygen. Elementor users also get a DiceBar widget in the panel, registered only when Elementor is actually loaded.

Adding it to a theme template

Only needed for a template file, where a shortcode in the editor cannot reach. Edit a child theme, or the next update overwrites it.

<?php echo do_shortcode( '[dicebar]' ); ?>

Guard it if the plugin might ever be deactivated, so the template does not print the raw shortcode text:

<?php
if ( shortcode_exists( 'dicebar' ) ) {
    echo do_shortcode( '[dicebar]' );
}
?>

Frequently asked questions

Does a mobile bottom bar work with any WordPress theme?

Yes. DiceBar attaches to the wp_footer hook, which every theme the WordPress directory accepts is required to call. The realistic conflict is stacking order, and there is a z-index setting on the Behaviour tab for exactly that.

How do I add a click to call button in WordPress?

Install DiceBar, open it in the dashboard menu, press Add an item, choose Call as the type, and enter your phone number. The button becomes a tel: link, so tapping it opens the dialler with the number already entered. No page load happens in between.

Can I add a WhatsApp chat button to the footer bar?

Yes. Choose WhatsApp as the type and enter your number including the country code. You can also write a message that is prefilled when the chat opens, which noticeably raises how many people actually send one.

How many buttons fit in a mobile footer bar?

Four. At 320 pixels wide, the narrowest phone still in real use, the bar has 288 pixels of usable width. Four labelled buttons is 72 pixels each, which fits a word of about eight characters. A fifth button does not shrink the words, it cuts them off, so the plugin caps the list at four and explains why.

Does a sticky footer bar slow a site down?

Not measurably. DiceBar loads nothing at all on any page where the bar does not appear, not even a stylesheet. Where it does appear it adds one small stylesheet and one small script, with no jQuery and no external requests.

Does it work with WP Rocket, LiteSpeed or other caching plugins?

Yes, and it was designed for caching rather than patched for it. Rules that depend on which page you are on run on the server and cache correctly. Rules that differ between two visitors at the same address, such as whether they are signed in, run in the browser instead. The script also carries the opt-out attributes those plugins respect, so it is never deferred or combined.

Can I show the bar only on some pages?

Yes. Choose everywhere, only on the pages you list, or everywhere except those pages. Individual buttons can also have their own screen and visitor rules, so one button can appear where another does not.

Can I show icons only, without labels?

Yes: icons and words, icons only, or words only. It applies to the whole bar rather than one button, because an unlabelled icon centres itself while a labelled one lifts to make room. Mixing them leaves one mark sitting lower than its neighbours for no reason anybody can see.

Does DiceBar track visitors?

No. Nothing is collected, nothing is sent anywhere, and the plugin contacts no external service at any point. A tap does fire an event inside the page so your own analytics can listen for it, and what happens next is entirely your own code.

Is it really free?

Yes. Every feature described on this page is in the free plugin, under the GPL.

Tracking taps, without the plugin tracking anything

document.addEventListener( 'dicebar:click', function ( event ) {
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push( {
        event: 'footer_bar_click',
        button: event.detail.type
    } );
} );

Every button also carries stable data attributes, so a tag manager can target one with a selector instead.

Why it works with page caching

A full-page cache stores one copy of a page and serves it to everybody, which quietly breaks any rule that differs between two visitors at the same address. DiceBar splits its rules by kind:

Rule Worked out Why
Which page On the server Varies with the address, so a cache keyed on the address is correct
Screen width In CSS The browser re-evaluates it on rotation for free
Signed in or out In the browser Differs between two visitors at the same address

Extending it

Filter Changes
dicebar_item_types Register your own button type
dicebar_icons Add or replace icons
dicebar_presets Add your own starter kits
dicebar_will_render Decide whether the bar renders on a request
dicebar_z_index Change the stacking order in code
add_filter( 'dicebar_item_types', function ( $types ) {
    $types['booking'] = array(
        'label' => 'Booking',
        'icon'  => 'calendar',
        'value' => array( 'kind' => 'url', 'label' => 'Booking address' ),
        'extra' => array(),
    );

    return $types;
} );

Every value is also a CSS custom property on the wrapper, so a theme can override anything without an !important:

.dicebar {
    --dicebar-radius: 24px;
    --dicebar-accent: #e11d48;
}

A few decisions, and why

Five link schemes, and no others. Web, secure web, telephone, email and text message. Everything else is rejected on save, including for administrators, because administrator accounts get compromised and a script link inside a button is stored cross-site scripting.

Dark colours are chosen, not derived. An automatically inverted brand colour is almost always wrong, so the dark palette is set separately.

Nothing renders on an AMP request. The AMP plugin rejects custom script outright, so shipping markup that fails its validation would be worse than shipping none.

Development

npm install && composer install
npm run env:rebuild     # Docker WordPress, from nothing, with retries
npm run test:php        # PHPUnit against a real WordPress
composer lint           # PHPCS, WordPress standards, PHP 7.4 compatibility
npm run check           # the official Plugin Check
npm run build:zip       # the distributable archive
npm run verify:zip      # unpack it the way WordPress does

npm run version:set -- 1.7.0 writes the version to all four places that have to agree. A test asserts they match, because a plugin header and a readme stable tag that disagree ship the wrong code with no warning.

See CONTRIBUTING.md before opening a pull request, and SECURITY.md to report a vulnerability privately.

License

GPL-2.0-or-later. See LICENSE.

Built and maintained by Dice Codes, who also make DiceStack.

Read the full README on GitHub →

Releases

TagPublishedAssetDownloads
v1.7.0 Sep 9, 2026 dicebar.zip 1
v1.6.0 Sep 9, 2026 dicebar.zip 2