Vora Elements

Description

A widget pack for Elementor built around one idea: a page should only carry the
code it actually uses.

Every widget registers its own stylesheet and its own script, and declares them
as dependencies. Elementor prints only the handles the widgets on that page
asked for. A page with one button widget does not download the CSS for
seventy-nine others, and a widget with no script of its own costs nothing at all.
Widgets you never use can be switched off entirely from the settings screen, so
they are not even registered.

A header and footer builder, free

Build a header, a footer or any reusable block as a template, then choose where
it appears — the whole site, the front page, a post type, an archive, or a
single entry. Elementor’s own theme builder is a Pro feature; this is not.

What is in the box

  • Header, footer and site: navigation menu, mega-ready dropdowns, site logo,
    site title, site tagline, page title, breadcrumbs, search form, copyright,
    back to top, cart icon
  • Text and headings: advanced heading, dual-colour heading, gradient heading,
    animated text, drop cap, content ticker
  • Boxes and calls to action: info box, icon box, image box, flip box, card,
    call to action, promo box, creative button, dual button, image button
  • People and proof: team member, testimonial, review, logo grid, logo carousel
  • Data and tables: data table, info table, pricing table, price list, progress
    bar, counter, feature list
  • Media: image accordion, before/after compare, image hover, image scroll,
    image hotspots, filterable gallery, lightbox gallery, media carousel, video
    box, sticky video
  • Layout: advanced tabs, advanced accordion, content switcher, content reveal,
    tooltip, step flow, interactive circle, shape divider
  • Posts: post grid, post list, post tabs, taxonomy list, author box, table of
    contents
  • Marketing and social: countdown, event calendar, world clock, social icons,
    social share, WhatsApp button
  • WooCommerce, when WooCommerce is active: product grid, product carousel,
    product categories, product search, mini cart
  • Form stylers, each registered only when its form plugin is active: Contact
    Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms, Formidable Forms.
  • Donation Form, registered only when Vora Donations is active: places a
    one-time or recurring donation campaign and styles it.
    These render the form plugin’s own shortcode, so its validation, nonces and
    email all keep working — what the widget adds is styling controls.

Some of these are built differently on purpose

Video Box renders a facade, not an embed. A YouTube iframe costs roughly a
megabyte of player code and sets tracking cookies on page load, for every
visitor including the majority who never press play. Here the poster image is
the whole widget until it is clicked, and youtube-nocookie.com is the default
host when it finally loads.

Countdown resolves the author’s date in the site’s timezone on the server and
ships a UTC timestamp, so the browser only ever subtracts. Parsing the author’s
string in the browser — the usual implementation — gives every visitor outside
the site’s timezone the wrong deadline.

Media Carousel is a native scroll container with CSS scroll-snap rather than a
carousel library. That is around 10KB against roughly 160KB for the usual
bundle, it keeps the platform’s own momentum and trackpad behaviour, it is
exposed to assistive technology as a scrollable region for free, and it works
before the script has loaded.

Table of Contents is built in PHP from the post’s own headings, so it is in
the HTML for search engines and reader modes and causes no layout shift. It
reads Elementor’s element tree on builder pages and post_content on
theme-rendered posts — a contents widget that reads only one of those lists
nothing on half the web.

Filterable Gallery removes filtered-out items with the hidden attribute
rather than fading them out, so a keyboard user does not tab through a dozen
invisible links.

Accessibility

Submenus, tabs, accordions and carousels are operated by real buttons carrying
aria-expanded or aria-current, not by hover alone — hover does not exist on
a touch screen and cannot be reached from a keyboard. Anything that moves by
itself has a way to stop it. Every widget respects prefers-reduced-motion.

Multilingual and right-to-left

Every string in the plugin is translatable, in the admin screens and in what
visitors see, and a POT file ships in /languages for anyone starting a
translation.

Thirty-eight of the widget stylesheets carry a right-to-left counterpart, so on
an Arabic, Hebrew, Persian or Urdu site the submenus open on the correct side,
the carousel arrows point the correct way and icons sit on the correct side of
their labels. WordPress swaps the files itself on an RTL locale; a
left-to-right site loads nothing extra and pays nothing for this.

Header and footer templates are a translatable post type, declared through a
wpml-config.xml that both WPML and Polylang read, so each language can have
its own header without any configuration. [vora_template id="12"] resolves to
the current language’s version of that template where one exists, and falls
back to the original where it does not — so a translated page does not end up
showing an untranslated block.

Numbers and dates follow the site’s locale rather than US conventions: the
counter widget uses the locale’s own thousands and decimal marks (so a German
site reads 1.234,5 and not 1,234.5), and dates are formatted with the site’s
settings and translated month and day names.

External services

Most of this plugin talks to nothing outside your site. The widgets below are
the exception, and none of them does anything unless you place that widget on
a page.

Weather widget — Open-Meteo

The Weather widget shows current conditions and a short forecast using
Open-Meteo, a free weather API that needs no account and no key.

  • What is sent: the place name you type into the widget, to
    geocoding-api.open-meteo.com, which returns coordinates; then those
    coordinates and your chosen units to api.open-meteo.com, which returns the
    forecast.
  • When: only when a page containing the Weather widget is rendered and the
    cached reading has expired. Requests are made by your server, not by your
    visitors’ browsers, and the result is cached for an hour — so no visitor
    data, IP address or browser information ever reaches Open-Meteo.
  • Terms of service: https://open-meteo.com/en/terms
  • Privacy policy: https://open-meteo.com/en/terms#privacy

Video Box and Sticky Video — YouTube and Vimeo

Both widgets embed a video you choose. Nothing is requested until a visitor
presses play: until then the widget is a poster image, so an unplayed video
costs no request and sets no cookie. Once play is pressed, the player is loaded
from the host you chose — youtube-nocookie.com or youtube.com for YouTube,
player.vimeo.com for Vimeo — which then applies its own tracking and cookies.
YouTube embeds default to youtube-nocookie.com.

  • YouTube terms: https://www.youtube.com/t/terms — privacy:
    https://policies.google.com/privacy
  • Vimeo terms: https://vimeo.com/legal/ — privacy:
    https://vimeo.com/legal/privacy/policy

Mailchimp widget

The Mailchimp widget posts a subscribe form directly to the Mailchimp form
action URL you paste into it, which is an address on list-manage.com. Your site does not contact Mailchimp; the
visitor’s browser submits to Mailchimp when they subscribe, and the data sent is
whatever the form’s fields collect.

  • Terms: https://mailchimp.com/legal/terms/ — privacy:
    https://www.intuit.com/privacy/statement/

WhatsApp Button — WhatsApp (Meta)

The WhatsApp Button widget is a link to wa.me, WhatsApp’s click-to-chat
address. No WhatsApp script is loaded and nothing is sent while the page is
viewed.

  • What is sent: when a visitor clicks the button, their browser opens
    https://wa.me/ with the phone number you entered in the widget and, if you
    set one, the pre-filled message you wrote. WhatsApp also receives whatever
    its site collects from any visitor, such as the visitor’s IP address.
  • When: only when a visitor clicks the button.
  • Terms of service: https://www.whatsapp.com/legal/terms-of-service
  • Privacy policy: https://www.whatsapp.com/legal/privacy-policy

Social Share widget — the networks you choose

The Social Share widget shows share buttons for the networks you pick in the
widget. Each button is a plain link to that network’s own share page. No
network script, button or tracking pixel is loaded, and nothing is sent while
the page is viewed.

  • What is sent: when a visitor clicks a button, their browser opens that
    network’s share page with the address (URL) and title of the page being
    shared, so the visitor can post it. The network also receives whatever its
    site collects from any visitor, such as the visitor’s IP address and, if they
    are signed in, their account.
  • When: only when a visitor clicks that network’s button. Networks you do not
    select in the widget are never linked.
  • Email sharing opens the visitor’s own mail program and uses no service.

The networks, what each share address is used for, and their terms:

  • Facebook (Meta), facebook.com/sharer — shares the page to Facebook.
    Terms: https://www.facebook.com/terms.php — Privacy:
    https://www.facebook.com/privacy/policy/
  • X, x.com/intent/tweet — composes a post with the page link and title.
    Terms: https://x.com/tos — Privacy: https://x.com/privacy
  • LinkedIn, linkedin.com/sharing — shares the page to LinkedIn.
    Terms: https://www.linkedin.com/legal/user-agreement — Privacy:
    https://www.linkedin.com/legal/privacy-policy
  • WhatsApp (Meta), api.whatsapp.com/send — opens a WhatsApp message
    containing the page title and link.
    Terms: https://www.whatsapp.com/legal/terms-of-service — Privacy:
    https://www.whatsapp.com/legal/privacy-policy
  • Telegram, t.me/share — opens a Telegram message with the page link and
    title. Terms: https://telegram.org/tos — Privacy: https://telegram.org/privacy
  • Reddit, reddit.com/submit — submits the page link and title as a post.
    Terms: https://redditinc.com/policies/user-agreement — Privacy:
    https://www.reddit.com/policies/privacy-policy
  • Pinterest, pinterest.com/pin/create — creates a Pin of the page with its
    title. Terms: https://policy.pinterest.com/en/terms-of-service — Privacy:
    https://policy.pinterest.com/en/privacy-policy
  • Threads (Meta), threads.net/intent/post — composes a post with the page
    title and link. Terms: https://help.instagram.com/769983657850450 —
    Privacy: https://help.instagram.com/515230437301944
  • Tumblr, tumblr.com/share — shares the page link and title to Tumblr.
    Terms: https://www.tumblr.com/policy/en/terms-of-service — Privacy:
    https://www.tumblr.com/privacy/en
  • VK, vk.com/share.php — shares the page link and title to VK.
    Terms: https://vk.com/terms — Privacy: https://vk.com/privacy
  • LINE, social-plugins.line.me/lineit/share — shares the page link in LINE.
    Terms: https://terms.line.me/line_terms — Privacy:
    https://www.lycorp.co.jp/en/company/privacypolicy/
  • XING, xing.com/spi/shares — shares the page link to XING.
    Terms: https://www.xing.com/terms — Privacy: https://privacy.xing.com/en/privacy-policy
  • Hacker News (Y Combinator), news.ycombinator.com/submitlink — submits the
    page link and title. Terms and privacy: https://www.ycombinator.com/legal/

Social Icons widget links to profile addresses that you type in yourself.
The widget ships with placeholder addresses for Facebook, X, Instagram,
LinkedIn, YouTube, TikTok, Threads, Pinterest, WhatsApp, Telegram, GitHub and
Discord, which you replace with your own. Nothing is sent to any of them; a
visitor who clicks a link simply visits that address, as with any link.

Screenshots

Installation

  1. Install and activate Elementor.
  2. Upload the vora-elements folder to /wp-content/plugins/, or install it from Plugins Add New.
  3. Activate the plugin.
  4. The widgets appear in Elementor’s panel under Vora Elements.

FAQ

Does this work with any theme?

Yes. The widgets style themselves and inherit your theme’s colours and fonts
where it makes sense to.

Do I need Elementor Pro?

No. The header and footer builder here covers the part of Elementor Pro’s theme
builder that most sites install it for.

Will it slow my site down?

Each widget’s CSS and JavaScript is registered but not enqueued until a page
actually uses that widget, so the cost is proportional to what is on the page
rather than to what the plugin contains. Widgets you switch off in Settings are
not registered at all.

Can I turn widgets off?

Yes, individually or by group, under Settings. A widget already used on a page
keeps working until you remove it.

Does it work with WPML or Polylang?

Yes. Header and footer templates are declared translatable in a
wpml-config.xml, which both plugins read, so each language gets its own
templates and the template list is already filtered to the language being
edited. The [vora_template] shortcode follows the current language too.

Does it support right-to-left languages?

Yes. The stylesheets that contain directional rules ship a flipped counterpart,
and WordPress serves those instead on an RTL locale. Nothing extra is loaded on
a left-to-right site.

Can I put a tracking or chat script in a header or footer template?

Yes, in an Elementor HTML widget, provided the template was created by a user
who is allowed to save unfiltered HTML — an administrator, or an editor on a
single site. That is the same rule WordPress applies to scripts in ordinary
post content, and it matters more for a template, because a template renders on
every page of the site rather than on one post. A template’s markup is escaped
on output, and a script saved by a user without that capability is removed
rather than printed. Structured data (application/ld+json) is always kept.

What happens to my templates if I delete the plugin?

Nothing — they are left in place, so reinstalling picks up where you left off.
There is a setting to remove everything on uninstall, and it is off by default.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Vora Elements” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Vora Elements” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.0.0

  • First release: 80 widgets and the header and footer builder.