Vora Elements

Vora Elements documentation

Eighty widgets for Elementor and a header and footer builder — how to install them, where everything lives, and what each setting actually changes.

Version1.0.0WordPress6.0+PHP7.4+Elementor3.5+LicenceGPL-2.0-or-later
Get Vora Elements

Install

Vora Elements is an Elementor addon. Elementor must be installed and active first — the plugin declares Requires Plugins: elementor, so WordPress will not let it activate on its own.

  1. 1Install and activate Elementor (the free plugin) from Plugins → Add New.
  2. 2Upload the vora-elements folder to /wp-content/plugins/, or install the zip from Plugins → Add New → Upload Plugin.
  3. 3Activate Vora Elements.
  4. 4Open any page with Elementor. The widgets are in the panel under the Vora Elements category.

If activation fails

An Elementor older than 3.5 is the usual cause. The plugin checks the version and stays dormant rather than fataling, so the site keeps working — update Elementor and the widgets appear.

Where everything lives

Two places: a top-level admin menu, and a category inside the Elementor panel.

WidgetsVora Elements → Widgets

Switch widgets on and off, turn the builder on or off, and set what happens on uninstall. Needs the manage_options capability.

Header & FooterVora Elements → Header & Footer

The template list. Create and edit headers, footers and reusable blocks. Needs edit_pages, so an editor can maintain headers without being an administrator.

Widget panelElementor editor → Vora Elements

Where the widgets are dragged onto a page.

Using a widget

Drag it from the panel like any Elementor widget. Every widget in the pack shares one control system, so the Style tab is laid out the same way from one widget to the next, and the spacing, border, typography and hover controls you learn on one apply to the rest. Widgets inherit your theme’s colours and fonts where that makes sense, so a freshly dropped widget looks like it belongs to the site.

What loading looks like

Each 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 — so a page with one button does not download the CSS for the other seventy-nine, and a widget with no script of its own adds no JavaScript at all.

The 80 widgets

Grouped the way the settings screen groups them. Widgets marked with a gate are registered only when the plugin they depend on is active — they will not appear in the panel otherwise, and they cost nothing when absent.

Header, footer and site

9
  • Nav Menu
  • Site Logo
  • Site Title
  • Site Tagline
  • Page Title
  • Breadcrumbs
  • Search
  • Copyright
  • Back to Top

Text and headings

6
  • Advanced Heading
  • Dual Heading
  • Gradient Heading
  • Animated Text
  • Drop Cap
  • Content Ticker

Boxes and calls to action

10
  • Info Box
  • Icon Box
  • Image Box
  • Flip Box
  • Card
  • Call to Action
  • Promo Box
  • Creative Button
  • Dual Button
  • Image Button

People and proof

5
  • Team Member
  • Testimonial
  • Review
  • Logo Grid
  • Logo Carousel

Data and tables

7
  • Data Table
  • Info Table
  • Pricing Table
  • Price List
  • Progress Bar
  • Counter
  • Feature List

Media

10
  • Image Accordion
  • Image Compare
  • Image Hover
  • Image Scroll
  • Image Hotspots
  • Filterable Gallery
  • Lightbox Gallery
  • Media Carousel
  • Video Box
  • Sticky Video

Layout

8
  • Tabs
  • Accordion
  • Content Switcher
  • Content Reveal
  • Tooltip
  • Step Flow
  • Interactive Circle
  • Shape Divider

Posts

6
  • Post Grid
  • Post List
  • Post Tabs
  • Taxonomy List
  • Author Box
  • Table of Contents

Marketing and social

8
  • Countdown
  • Event Calendar
  • World Clock
  • Weather
  • Social Icons
  • Social Share
  • WhatsApp Button
  • Mailchimp

WooCommerce

5only when WooCommerce is active
  • Product Grid
  • Product Carousel
  • Product Categories
  • Product Search
  • Mini Cart

Form stylers

6only when that form plugin is active
  • Contact Form 7
  • WPForms
  • Gravity Forms
  • Ninja Forms
  • Fluent Forms
  • Formidable Forms

About the form stylers

A form styler renders your form plugin’s own shortcode. Validation, nonces, spam protection and email all keep working exactly as that plugin does them — what the widget adds is Elementor styling controls for the fields, labels and submit button.

Switching widgets off

Go to Vora Elements → Widgets. The masthead shows the version and a running count, and the screen below it is the whole of the plugin’s configuration. Type into Search widgets to filter by name, and use the All / On / Off filter to see only what is currently enabled or disabled. Enable all and Disable all act on what is currently visible, so searching first is the quick way to switch off a whole family of widgets. Each group has its own controls too.

Changes are held until you save — a bar appears at the bottom with Save changes and Discard, and nothing is written until you press Save. A widget already used on a published page keeps working until you remove it from that page, so switching one off cannot break a live layout without warning.

Why switching one off is worth doing

A disabled widget is not registered with Elementor at all — it is not just hidden from the panel, and its stylesheet and script are never registered either. Saving also clears Elementor’s generated CSS cache, because a widget switched off mid-session would otherwise leave its rules behind in those per-post files.

Header and footer builder

Build a header, a footer or a reusable block with Elementor, then say where it should appear. This covers the part of Elementor Pro’s theme builder that most sites install Pro for.

  1. 1Go to Vora Elements → Header & Footer and choose New template.
  2. 2Give it a name — it is only ever shown in the admin — and pick the type: Header, Footer, or Block.
  3. 3Choose the display conditions. A Block takes no conditions; it is placed by shortcode only.
  4. 4Publish, then Edit with Elementor and build it.
Header

Replaces the theme's header, wherever the conditions match.

Footer

Replaces the theme's footer, wherever the conditions match.

Blockshortcode only

Replaces nothing automatically — you place it yourself with the shortcode.

Editing on a clean canvas

A header template is edited on the plugin’s own canvas rather than inside the theme’s layout. Editing a header with the theme’s header wrapped around it would show two headers stacked, and nothing you built would sit where it will actually sit on the site.

Display conditions

There are nine rules. A template can carry more than one, and more than one template can match the same page — so the rules are ordered by how specific they are, and the most specific matching template wins. The order below is the precedence, lowest first.

#RuleMatches
1Entire siteEvery page. The usual catch-all for a site-wide header.
2All archivesCategory, tag, author, date and post-type archives.
3All posts and pagesAny single entry, of any post type.
4Blog / posts pageThe page listing your posts.
5Search resultsThe search results page.
6404 pageThe not-found page.
7All postsSingle posts only — not pages.
8All pagesSingle pages only — not posts.
9Front pageYour front page, whatever is set to be it.

There is no per-entry targeting

You cannot point a template at one named post or one specific post type — the nine rules above are the whole set. To give a single page its own header, use a Block and place it with the shortcode on that page.

The shortcode

Any template — Header, Footer or Block — can be placed by hand with its post ID:

[vora_template id="12"]

The ID is in the template list, and in the URL when you edit one. The shortcode works in post content, in a widget area, and anywhere do_shortcode() is applied. On a multilingual site it resolves to the current language’s version of that template where one exists, and falls back to the original where it does not.

Upgrading from an older build

The tag [wpvora_template] is still answered, so pages written before the rename keep rendering. New work should use [vora_template].

Built differently on purpose

Five widgets do not work the way their equivalents usually do. Knowing why saves you looking for a setting that deliberately does not exist.

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 the player finally loads.

Countdown resolves the date on the server

Your date is resolved in the site's timezone in PHP and shipped to the browser as a UTC timestamp, so the browser only ever subtracts. Parsing the author's date string in the browser — the usual implementation — gives every visitor outside the site's timezone the wrong deadline.

Media Carousel is not a carousel library

It is a native scroll container with CSS scroll-snap: around 10KB against roughly 160KB for the usual bundle. It keeps the platform's own momentum and trackpad behaviour, 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

The list is assembled from the post's own headings on the server, 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 really removes what it filters

Filtered-out items get the hidden attribute rather than being faded out, so a keyboard user does not tab through a dozen invisible links.

Languages and right-to-left

Every string 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 flipped counterpart. On an Arabic, Hebrew, Persian or Urdu site, WordPress serves those instead: submenus open on the correct side, carousel arrows point the correct way, and icons sit on the correct side of their labels. A left-to-right site loads nothing extra and pays nothing for this.

Header and footer templates are a translatable post type, declared in a wpml-config.xml that both WPML and Polylang read, so each language can have its own header with no configuration. Numbers and dates follow the site’s locale rather than US conventions — a German site’s counter reads 1.234,5, not 1,234.5.

External services

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

Weather — Open-Meteo

The place name you type is sent to geocoding-api.open-meteo.com, which returns coordinates; those coordinates and your chosen units then go to api.open-meteo.com, which returns the forecast. No account and no API key are needed.

The 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.

Video Box and Sticky Video — YouTube and Vimeo

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 loads from the host you chose, which then applies its own tracking and cookies. YouTube embeds default to youtube-nocookie.com.

Mailchimp

The widget posts a subscribe form directly to the Mailchimp form action URL you paste into it. 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.

Social share buttons are plain links. They send nothing until a visitor clicks one, at which point the network receives the URL being shared, as with any link.

Uninstalling

Deleting the plugin leaves your header and footer templates and your settings in place, so reinstalling picks up where you left off. If you want a clean removal instead, switch on “Remove all data when the plugin is deleted” at the bottom of the Widgets screen before deleting. It is off by default.

Deactivating is not deleting

The uninstall routine runs when the plugin is deleted, not when it is deactivated. Deactivating never removes anything.

Troubleshooting

The widgets are not in the Elementor panel+

Check that Elementor is active and at 3.5 or newer, then check Vora Elements → Widgets — the widget may be switched off. A WooCommerce widget or a form styler will not appear at all unless the plugin it depends on is active.

My header template is not showing+

Three things to check, in order: the builder toggle at the top of the Widgets screen is on; the template is published, not a draft; and its display conditions actually match the page you are looking at. If another template also matches, the more specific one wins.

A widget looks unstyled after I changed settings+

Regenerate Elementor's CSS from Elementor → Tools → Regenerate CSS & Data. Saving the Vora Elements settings clears that cache already, but a caching or optimisation plugin in front of it may still be serving the old file.

Do I need Elementor Pro?+

No. The header and footer builder here covers the part of Pro's theme builder that most sites install it for, and every widget in the pack works with free Elementor.

Will this slow my site down?+

The cost is proportional to what is on the page rather than to what the plugin contains. Each widget's CSS and JavaScript is registered but not enqueued until a page actually uses that widget, and widgets switched off in settings are not registered at all.

Does it work with my theme?+

Yes. The widgets style themselves and inherit your theme's colours and fonts where it makes sense to. If you use the header and footer builder, your theme's own header and footer are replaced wherever a template's conditions match.

What happens to my templates if I delete the plugin?+

Nothing — they are left in place, unless you switched on “Remove all data when the plugin is deleted” first.