Title: LandTech Extras for Elementor
Author: Randy Breland
Published: <strong>July 6, 2026</strong>
Last modified: September 29, 2026

---

Search plugins

![](https://ps.w.org/landtech-extras-for-elementor/assets/banner-772x250.png?rev
=3598192)

![](https://ps.w.org/landtech-extras-for-elementor/assets/icon-256x256.png?rev=3598192)

# LandTech Extras for Elementor

 By [Randy Breland](https://profiles.wordpress.org/brelandr/)

[Download](https://downloads.wordpress.org/plugin/landtech-extras-for-elementor.2.9.0.zip)

[Live Preview](https://twd.wordpress.org/plugins/landtech-extras-for-elementor/?preview=1)

 * [Details](https://twd.wordpress.org/plugins/landtech-extras-for-elementor/#description)
 * [Reviews](https://twd.wordpress.org/plugins/landtech-extras-for-elementor/#reviews)
 *  [Installation](https://twd.wordpress.org/plugins/landtech-extras-for-elementor/#installation)
 * [Development](https://twd.wordpress.org/plugins/landtech-extras-for-elementor/#developers)

 [Support](https://wordpress.org/support/plugin/landtech-extras-for-elementor/)

## Description

**Disclaimer:** Independent fork of the original **Elementor Extras** plugin (also
known as **Extras for Elementor**, by Namogo). Not affiliated with or endorsed by
Namogo or Elementor Ltd. Original credits: Namogo (Elementor Extras). Maintained
by Land Tech Web Designs.

**LandTech Extras for Elementor** is a free, complete Elementor addon. It is an 
actively maintained replacement for sites that relied on Elementor Extras / Extras
for Elementor. Existing Elementor templates that used those widget slugs (for example`
ee-calendar`, `posts-extra`, `ee-gallery`) continue to work after you switch to 
this plugin.

You do not need a paid product to use anything listed under **Widgets and extensions**.
Optional API keys (Google Maps, Snazzy Maps, Instagram) live under **Elementor Extras
APIs**. Full documentation: [extrasforelementor.com/docs](https://extrasforelementor.com/docs/).

#### What’s new in 2.9

This release is a large free-plugin update (work from 2.6 through 2.9, shipped together):

 * **Social proof & people:** Testimonials (manual, WooCommerce reviews, or comments),
   FAQ Accordion with optional FAQPage schema, Team Members (classic, overlay, flip,
   horizontal), Icon Box, Call to Action, Star Rating.
 * **Commerce-ready layouts:** Pricing Table and Pricing Toggle (monthly/annual,
   optional WooCommerce add-to-cart when WooCommerce is active).
 * **Motion & media:** Lottie scroll / hover / click / scrub playback via bundled
   lottie-web; Video Playlist (YouTube, Vimeo, self-hosted); Progress Bar; Countdown;
   Reading Progress; Social Share; Back to Top; Cookie Consent; Sticky Wrapper; 
   Dark Mode Toggle.
 * **Calendar & popups:** iCal / Google Calendar URL, The Events Calendar, and WooCommerce
   Bookings sources; popup delay, scroll, inactivity, and cookie/session suppression.
 * **Editor tools:** ACF Free dynamic tags, block patterns, SEO hints in the editor,
   Generate alt text via the WordPress AI Client (Settings  Connectors), Loop Builder/
   WCAG / CSP notes.
 * **Gallery, tabs, SVG, comparison:** Gallery video tiles and pagination; Tabs 
   vertical + mobile accordion + deep links; Inline SVG path colors and reduced-
   motion-safe animations; Image Comparison vertical drag.
 * **Add-on features tab:** When the optional Premium plugin is not installed, this
   tab shows a read-only catalog of what that **separate** plugin adds. When Premium
   is active, the catalog is hidden and the live Enable checkboxes appear instead.

#### Optional Premium add-on (separate plugin)

This WordPress.org plugin is complete on its own. Nothing below is included here
as a disabled or locked feature.

**LandTech Extras for Elementor Premium** is a **separate** paid plugin you may 
install beside this one. It adds extra capabilities. It does not unlock features
that already ship here.

When Premium is not installed, **Elementor Extras  Add-on features** lists the add-
on catalog (informational). After you activate Premium, that catalog is hidden.

The add-on currently includes:

 * **WooCommerce & conversion:** shop extras, product page builder, product carousel,
   wishlist, 360 viewer, 3D viewer, smart countdown.
 * **Forms, popups & menus:** multi-step forms, smart popup triggers, popup A/B 
   tests, mega menu, Gravity Forms styler, booking calendar, login/register, marketing
   button, business hours, calculator, experience builder.
 * **Dynamic data & loops:** remote content, AJAX facets, advanced loop query, masonry/
   metro, live data table, social feeds (Instagram / X / TikTok), external grid.
 * **Site chrome & motion:** header/footer builder, one-page dot nav, text animation,
   scroll story, evolutionary layouts.
 * **AI & accessibility:** Genius assistant, AI workspace (bring-your-own-key), 
   alt-text batch, semantic search, voice search, WCAG scanner.
 * **Agency tools:** export/import package, CPT builder, content protection, white
   label, template marketplace, time machine, asset compiler, PWA builder, client
   feedback, conditional CSS classes.

Add-on documentation: [extrasforelementor.com/docs/premium](https://extrasforelementor.com/docs/premium/).
Purchase and license support stay on [landtechwebdesigns.com](https://landtechwebdesigns.com/product/extras-for-elementor/).

### Widgets and extensions

Find widgets in the Elementor panel under the **LandTech Extras for Elementor** 
category. Widget type slugs match the upstream Elementor Extras fork for easier 
migration.

**Widgets:** Age Gate (`ee-age-gate`), Audio Player (`ee-audio-player`), Back to
Top (`ltxe-back-to-top`), Breadcrumbs (`ee-breadcrumbs`, optional **BreadcrumbList**
JSON-LD when **Structured data** is enabled), Buttons / Button Group (`button-group`),
Calendar (`ee-calendar`), Circle Progress (`circle-progress`), Cookie Consent (`
ltxe-cookie-consent`), Countdown (`ltxe-countdown`), Dark Mode Toggle (`ltxe-dark-
mode`), Devices (`devices-extended`), FAQ Accordion (`ltxe-faq`), FAQ Schema (`ee-
faq-schema`), Gallery (`gallery-extra`), Gallery Slider (`gallery-slider`), Google
Map (`ee-google-map`), Heading Extra (`heading-extended`), Hotspots (`hotspots`),
HTML5 Video Player (`html5-video`), Icon Box (`ltxe-icon-box`), Image Comparison(`
image-comparison`), Inline SVG (`ee-inline-svg`), Lottie (`ee-lottie`), Call to 
Action (`ltxe-cta`), Offcanvas (`ee-offcanvas`), Popup (`ee-popup`), Posts Extra/
Portfolio / Carousel layouts (`posts-extra`), Pricing Table (`ltxe-pricing-table`),
Pricing Toggle (`ltxe-pricing-toggle`), Progress Bar (`ltxe-progress-bar`), Random
Image (`ee-random-image`), Reading Progress (`ltxe-reading-progress`), Scroll Indicator(`
ee-scroll-indicator`), Search Form (`ee-search-form`), Slide Menu (`ee-slide-menu`),
Social Share (`ltxe-social-share`), Star Rating (`ltxe-star-rating`), Sticky Wrapper(`
ltxe-sticky-wrapper`), Switcher (`ee-switcher`), Table (`table`), Table of Contents(`
ee-table-of-contents`), Tabs (`ee-tabs`), Team Members (`ltxe-team-members`), Testimonials(`
ltxe-testimonials`), Text Divider (`text-divider`), Timeline (`timeline`), Toggle
Element (`ee-toggle-element`), Unfold (`unfold`), Video Playlist (`ltxe-video-playlist`).

**Editor extensions** (Advanced tab on Elementor elements): Display Conditions (
free: time, day, URL/query vars including UTM presets, cookie, business hours; WooCommerce
purchase history and membership rules ship in the separate **LandTech Extras Premium**
add-on), Parallax Background, Parallax Elements, Portfolio Parallax, Sticky Elements,
Tooltips.

Disable unused widgets under **Elementor  LandTech Extras  Widgets** to speed up
the editor.

### Try It Live – Preview This Plugin Instantly

Experience LandTech Extras for Elementor without installation: the blueprint installs**
Elementor** and this plugin from **WordPress.org**, seeds **sample images and blog
posts**, builds a **demo homepage** with links to every widget, and creates a **
dedicated demo page per feature** — including the 2.9 set (testimonials, FAQ, team
members, pricing, countdown, video playlist, social share, dark mode, and more) 
plus gallery, search, posts, maps, and navigation. Log in as **admin** / **password**
to edit with Elementor or open **Elementor Extras** settings.

[Preview on WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://plugins.svn.wordpress.org/landtech-extras-for-elementor/assets/blueprints/blueprint.json)

The same blueprint ships in the plugin package as `blueprint.json` (repository root)
and `assets/blueprints/blueprint.json`. WordPress.org serves the public copy from**
plugin SVN** at `assets/blueprints/blueprint.json` for directory Live Preview integration.

### External Services

This plugin may cause the site, the WordPress admin, or the Elementor editor to 
contact third-party services when you enable the related features or save API credentials.
For each service below, direct links to its **Terms of Service** (or equivalent)
and **Privacy Policy** are provided.

**Google Maps Platform (Google LLC)**

When you enable the Google Map widget or turn on **Load Google Maps API** under 
Elementor  LandTech Extras  APIs, visitors’ browsers may load the Maps JavaScript
API from Google (`maps.googleapis.com`, including via bundled `assets/lib/gmap3/
gmap3.js`). Requests can include the **Maps API key** you enter in settings, map
coordinates or place queries you configure, and typical browser HTTP metadata. [Terms of Service](https://cloud.google.com/maps-platform/terms)·
[Privacy Policy](https://policies.google.com/privacy)

**OpenStreetMap tile servers (OpenStreetMap Foundation and community tile providers)**

When you set the Google Map widget **Map provider** to **OpenStreetMap**, visitors’
browsers load bundled **Leaflet** (`assets/lib/leaflet/`) and request raster map
tiles from OpenStreetMap’s tile service (`tile.openstreetmap.org`, including subdomains`
a`–`c`). Requests can include map tile coordinates (zoom level and x/y indices),
the visitor’s IP address, and standard browser HTTP metadata. Marker icon assets
are served from your site; no API key is required for the default tile layer. [OpenStreetMap Foundation Terms](https://wiki.osmfoundation.org/wiki/Terms_of_Use)·
[OpenStreetMap Foundation Privacy Policy](https://wiki.osmfoundation.org/wiki/Privacy_Policy)·
[OpenStreetMap copyright](https://www.openstreetmap.org/copyright)

**Snazzy Maps (snazzymaps.com; operated by Atlist Inc.)**

When you add a Snazzy Maps API key and search for map styles in the Elementor editor,
the editor script (`assets/js/editor.js`) requests JSON from `https://snazzymaps.
com/{endpoint}.json` (explore, my-styles, or favorites). Those requests can include
your **Snazzy Maps API key**, pagination parameters, and standard browser HTTP metadata.
Server-side PHP does not proxy these editor requests. Atlist publishes the legal
terms that apply to Snazzy Maps / Atlist services: [Terms of Service](https://www.atlist.com/terms)·
[Privacy Policy](https://www.atlist.com/privacy)

**Instagram (Meta Platforms, Inc.)**

When you use Instagram-related options (Gallery widget Instagram source or an access
token under Elementor  LandTech Extras  APIs), the plugin may request data from **
Instagram Graph API** (`graph.instagram.com`, including token refresh in admin) 
and/or **instagram.com** endpoints used by the Gallery widget. Data sent can include
the **access token** you configure, API parameters required by Instagram, and standard
HTTP metadata. [Instagram Terms of Service](https://www.instagram.com/legal/terms/)·
[Instagram Privacy Policy](https://privacycenter.instagram.com/policy/) · [Meta Privacy Policy](https://www.facebook.com/privacy/policy/)·
Meta **Developer Terms** (API use): [Terms](https://developers.facebook.com/terms/)

**OpenAI (OpenAI, LLC) — optional bring-your-own-key (separate LandTech Extras add-
on AI workspace)**

This WordPress.org build may store optional API credentials in the `landtech_extras_apis`
option when you save settings, but **does not** call OpenAI from this plugin alone.
When the separate **LandTech Extras add-on** is active, AI workspace is enabled,
and you choose **OpenAI**, that add-on may send HTTPS requests to **OpenAI’s API**(
e.g. `api.openai.com`) with the **API key**, **prompt or content**, model parameters,
and standard HTTP metadata. [Terms of Service](https://openai.com/policies/terms-of-use/)·
[Privacy Policy](https://openai.com/policies/privacy-policy/)

**Anthropic (Anthropic, PBC) — optional bring-your-own-key (add-on AI workspace)**

Same as OpenAI above: credentials may be stored here; outbound **Anthropic API**
requests (e.g. `api.anthropic.com`) occur only when the separate add-on AI workspace
invokes them with your saved **Anthropic API key**, messages, and parameters. [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms)·
[Privacy Policy](https://www.anthropic.com/legal/privacy)

**Google Gemini API (Google LLC) — optional bring-your-own-key (add-on AI workspace)**

Same as OpenAI above: credentials may be stored here; outbound **Gemini** requests(
e.g. `generativelanguage.googleapis.com`) occur only when the separate add-on AI
workspace invokes them with your saved **Gemini API key**, prompts, and parameters.
[Google AI / Gemini API Terms](https://ai.google.dev/gemini-api/terms) · [Google Privacy Policy](https://policies.google.com/privacy)

**User-provided iCal / calendar feeds**

When the Calendar widget source is **iCal / Google Calendar URL**, the site server
requests the `.ics` URL you enter (`wp_safe_remote_get`). The request includes that
URL and standard HTTP metadata. No Land Tech server is involved. Review the calendar
host’s terms (Google, Microsoft, Apple, or your own feed) before publishing.

**YouTube (Google LLC)**

When a Gallery video tile or the Video Playlist widget uses a YouTube URL, visitors’
browsers load an embed iframe from `www.youtube.com` / `youtube.com`. Requests can
include the video ID you configured and standard browser HTTP metadata. [Terms of Service](https://www.youtube.com/t/terms)·
[Google Privacy Policy](https://policies.google.com/privacy)

**Vimeo (Vimeo.com, Inc.)**

When a Gallery video tile or the Video Playlist widget uses a Vimeo URL, visitors’
browsers load an embed iframe from `player.vimeo.com`. Requests can include the 
video ID you configured and standard browser HTTP metadata. [Terms of Service](https://vimeo.com/terms)·
[Privacy Policy](https://vimeo.com/privacy)

**WordPress AI Client (core Connectors)**

When an editor clicks **Generate alt text** on an image control, this plugin calls`
wp_ai_client_prompt()` if the WordPress AI Client is available. No provider API 
keys are stored by this plugin. Site admins configure providers under **Settings
Connectors**. The request can include a short prompt and the attachment image URL.
If the AI Client is not available, the endpoint returns HTTP 503. Review the terms
and privacy policy of the provider you connect in WordPress.

**Social share destinations (user-initiated)**

The Social Share widget only builds share URLs. A visitor click may open Facebook,
X/Twitter, LinkedIn, WhatsApp, Telegram, Pinterest, Reddit, or a `mailto:` window.
No third-party share SDK is loaded. Review each destination’s terms before enabling
that button.

**User-provided Lottie animation URLs (LottieFiles or other hosts)**

When the Lottie widget is set to load an animation from an **External URL** (or 
from a JSON file in your media library served from another origin), visitors’ browsers
request that JSON from the URL you configure. The Playground demo may load a sample
file from **LottieFiles** (`assets*.lottiefiles.com`) when you preview the bundled
demo page. No animation URL is transmitted to Land Tech servers. Review your animation
host’s terms and privacy policy before publishing.

### Third-party libraries

This plugin bundles or references third-party scripts. Licenses and upstream sources
for every bundled file are noted below. Full provenance details are in the matching`
README.txt` files under `assets/lib/`.

**anime.js 4.5.0** (MIT) — `assets/lib/anime/anime.js` / `anime.min.js`
 Source:
https://github.com/juliangarnier/anime — License notes: `assets/lib/anime/README.
txt`.

**Splitting.js 1.0.6** (MIT) — `assets/lib/splitting/splitting.js` / `splitting.
min.js` / `splitting.css`
 Source: https://github.com/shshaw/Splitting — License
notes: `assets/lib/splitting/README.txt`.

**GLightbox 3.3.1** (MIT) — `assets/lib/glightbox/js/glightbox.js` / `glightbox.
min.js` and CSS under `assets/lib/glightbox/css/`
 Source: https://github.com/biati-
digital/glightbox — License notes: `assets/lib/glightbox/README.txt`.

**jquery-circle-progress** (MIT) — https://github.com/kottenator/jquery-circle-progress
**
jquery.appear** (MIT) — https://github.com/morr/jquery.appear/ **LongShadow jQuery
Plugin** (MIT) — https://github.com/dangvanthanh/jquery.longShadow **HC-Sticky**(
MIT) — https://github.com/somewebmedia/hc-sticky **jQuery Mobile** (MIT/jquery.org)—
https://jquerymobile.com/ **jquery-visible** (MIT) — http://teamdf.com/jquery-plugins/
license/ **Parallax Background** (MIT) — https://github.com/erensuleymanoglu/parallax-
background **TableSorter** v2.32.0 (MIT/GPL dual, Mottie fork) — https://github.
com/Mottie/tablesorter **Isotope v3.0.6** (GPLv3) — `assets/lib/isotope/` standalone
modules (WordPress core jQuery via jquery-bridget) **Metafizzy / Desandro layout
dependencies** (MIT unless noted) — `assets/lib/jquery-bridget/`, `outlayer/`, `
ev-emitter/`, `get-size/`, `fizzy-ui-utils/`, `matches-selector/`, `masonry-layout/`(
each folder includes `README.txt`) **Packery v2.1.2** (GPLv3) — `assets/lib/packery/`
standalone modules (WordPress core jQuery via jquery-bridget) **Infinite Scroll 
4.0.1** (GPLv3) — `assets/lib/infinite-scroll/infinite-scroll.js` (core build; vanilla
DOM API via `new InfiniteScroll()`; no jquery-bridget) Source: https://infinite-
scroll.com — License notes: `assets/lib/infinite-scroll/README.txt`. **javascript-
detect-element-resize** (MIT) — https://github.com/sdecima/javascript-detect-element-
resize **tilt.js** (MIT) — https://github.com/gijsroge/tilt.js **Schedule-X Calendar
4.6.1** (MIT) — `assets/lib/schedule-x/` with Preact under `assets/lib/preact/` 
and `@js-temporal/polyfill` as `assets/lib/temporal-polyfill/js-temporal-schedule-
x.min.js` Source: https://github.com/schedule-x/schedule-x — License notes: `assets/
lib/schedule-x/README.txt`. **@lottiefiles/lottie-player** (MIT) — `assets/lib/lottie-
player/lottie-player.js` Source: https://github.com/LottieFiles/lottie-player — 
License notes: `assets/lib/lottie-player/README.txt`. **lottie-web 5.13.0** (MIT)—`
assets/lib/lottie-web/lottie.js` Source: https://github.com/airbnb/lottie-web — 
License notes: `assets/lib/lottie-web/README.txt`. **WaveSurfer.js 7.9.9** (BSD-
3-Clause) — optional Audio Player waveform skin Source: https://github.com/kwavesurfer/
wavesurfer.js — License notes: `assets/lib/wavesurfer/README.txt`. **GMAP3** (GPL-
3.0+) — http://gmap3.net **Leaflet** v1.9.4 (BSD-2-Clause) — `assets/lib/leaflet/
leaflet.js` / `leaflet.css` (OpenStreetMap map provider) Source: https://github.
com/Leaflet/Leaflet — License notes: `assets/lib/leaflet/README.txt`. **Slidebars**(
MIT) — http://www.adchsm.com/slidebars/

Date/time formatting in the Calendar widget uses **Moment.js** registered by WordPress
core when available.

### Development

Human-readable source for bundled/minified assets (included in this plugin package):

 * `assets/css/frontend.min.css` and `assets/css/frontend-rtl.min.css` — built from`
   assets/css/frontend.css` and `assets/css/frontend-rtl.css`.
 * `assets/js/frontend.min.js` — built from `assets/js/frontend.js`.
 * `assets/js/search-form-editor.js` — Elementor editor helper for Search Form restriction
   controls (loaded in the editor only).
 * `assets/js/landtech-extras-calendar-schedule-x.js` and `assets/js/table-csv-editor.
   js` — widget helpers (not minified; loaded directly when needed).
 * `assets/js/admin.min.js`, `assets/js/editor.min.js`, and `assets/js/notice.min.
   js` — built from their matching non-minified files in `assets/js/`.
 * `assets/css/admin.min.css`, `assets/css/editor.min.css`, and `assets/css/editor-
   preview.min.css` — built from matching non-minified CSS in `assets/css/`.
 * Widget/library `.min.js` / `.min.css` under `assets/lib/` — non-minified counterparts
   ship in the same folder where applicable; third-party-only bundles are documented
   under **Third-party libraries** above and in the per-library `README.txt` files
   under `assets/lib/`.
 * `assets/lib/landtech-extras-anime-helpers.js` — TweenMax-compatible animation
   shim using bundled anime.js (MIT).

From the plugin root, after **`npm install`**, run **`npm run build:assets`** to
regenerate the minified frontend CSS/JS files listed above (used by default enqueues
when `SCRIPT_DEBUG` is false).

Before publishing a public GitHub mirror, verify any **Repository** or **Source**
URL in this readme returns HTTP 200 (WordPress.org reviewers check linked URLs).

### Support

Full documentation for every widget, extension, and API is at [extrasforelementor.com/docs](https://extrasforelementor.com/docs/).
For add-on purchases, feature requests, and bug reports, email **sales@landtechwebdesigns.
com** or use the contact options on [Land Tech Web Designs](https://landtechwebdesigns.com/).

### Credits

Developed by **Land Tech Web Designs, Corp.**

## Screenshots

[⌊Enable or disable individual LandTech Extras widgets from Elementor → LandTech
Extras.⌉⌊Enable or disable individual LandTech Extras widgets from Elementor → LandTech
Extras.⌉[

Enable or disable individual LandTech Extras widgets from Elementor  LandTech Extras.

[⌊Editor extensions such as display conditions, sticky elements, parallax, and tooltips.⌉⌊
Editor extensions such as display conditions, sticky elements, parallax, and tooltips
.⌉[

Editor extensions such as display conditions, sticky elements, parallax, and tooltips.

[⌊Optional API keys for Google Maps, Snazzy Maps, Instagram, and BYOK LLM credentials.⌉⌊
Optional API keys for Google Maps, Snazzy Maps, Instagram, and BYOK LLM credentials
.⌉[

Optional API keys for Google Maps, Snazzy Maps, Instagram, and BYOK LLM credentials.

[⌊LandTech Extras widgets appear in the Elementor panel under the LandTech Extras
category.⌉⌊LandTech Extras widgets appear in the Elementor panel under the LandTech
Extras category.⌉[

LandTech Extras widgets appear in the Elementor panel under the LandTech Extras 
category.

## Installation

 1. Install and activate **Elementor**.
 2. Install and activate **LandTech Extras for Elementor** from this directory or from
    WordPress.org once published.
 3. Edit pages with Elementor and use **LandTech Extras for Elementor** widgets and
    extensions.

## FAQ

### Does this plugin require Elementor?

Yes. LandTech Extras for Elementor requires the free [Elementor](https://wordpress.org/plugins/elementor/)
page builder to be installed and active.

### Which Elementor version is required?

Elementor 3.5.0 or later. Compatibility is documented in the plugin header (`Elementor
tested up to`).

### Can I use this without Elementor Pro?

Yes. All free widgets and extensions work without Elementor Pro. Some widgets note
when Elementor Pro is required.

### How do I disable widgets I don’t use?

Go to **Elementor  LandTech Extras** in your WordPress admin and uncheck any widgets
or extensions you don’t plan to use. This improves Elementor editor load time.

### How do I get an API key for Google Maps?

Follow the [Google Maps API key guide](https://developers.google.com/maps/documentation/javascript/get-api-key)
and enter your key under **Elementor  LandTech Extras  APIs**.

### Is this plugin affiliated with Namogo or Elementor Ltd.?

No. This is an independent fork of the original Elementor Extras plugin by Namogo,
maintained by Land Tech Web Designs. It is not affiliated with or endorsed by Namogo
or Elementor Ltd.

### Is this a replacement for Elementor Extras / Extras for Elementor?

Yes. LandTech Extras for Elementor is an independent, GPLv3-maintained continuation
of the Elementor Extras (Extras for Elementor) widget set. It is intended for sites
that need those Elementor widgets and extensions without relying on the discontinued
original distribution. Widget type slugs (`ee-calendar`, `posts-extra`, and similar)
are preserved so existing Elementor JSON templates can load after you deactivate
the old plugin and activate LandTech Extras.

### Does this plugin require the Premium add-on?

No. Every widget and extension in this plugin works without Premium. The paid add-
on is a separate plugin that adds extra capabilities. It does not unlock features
that already ship here.

### What does the Premium add-on add?

WooCommerce extras, multi-step forms, header/footer builder, AI workspace, booking,
social feeds, and other lanes listed under **Optional Premium add-on** above. Details:
[extrasforelementor.com/docs/premium](https://extrasforelementor.com/docs/premium/).

### Can I migrate from Elementor Extras or Namogo Extras?

In most cases, yes. Export your Elementor templates, replace the old plugin with**
LandTech Extras for Elementor**, and re-open pages in Elementor. Widgets should 
resolve under the LandTech Extras category. Re-save pages if Elementor prompts you
to update data. Compare your widget list with the **Widgets and extensions** section
above; optional API keys (Maps, Instagram) must be re-entered under **Elementor  
LandTech Extras  APIs**.

### Does this plugin include Gutenberg blocks?

No. LandTech Extras adds **Elementor** widgets and Elementor editor extensions only.
Search terms like “Elementor blocks” usually refer to Elementor widgets or sections;
this plugin does not register WordPress block editor blocks.

### What prefix does this plugin use in code?

PHP functions, hooks, options, and transients use the **`landtech_extras_`** or **`
ltxe_`** prefix (four or more characters). Script/style handles use **`landtech-
extras-`**. Namespaced PHP classes live under **`LandTechExtras\`**. Elementor widget
type slugs (for example `ee-calendar` or `posts-extra`) are retained from the upstream
Elementor Extras fork so existing Elementor templates keep working; they are Elementor
element identifiers, not WordPress options or hooks.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“LandTech Extras for Elementor” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ Randy Breland ](https://profiles.wordpress.org/brelandr/)

[Translate “LandTech Extras for Elementor” into your language.](https://translate.wordpress.org/projects/wp-plugins/landtech-extras-for-elementor)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/landtech-extras-for-elementor/),
check out the [SVN repository](https://plugins.svn.wordpress.org/landtech-extras-for-elementor/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/landtech-extras-for-elementor/)
by [RSS](https://plugins.trac.wordpress.org/log/landtech-extras-for-elementor/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.9.0

 * Add: Testimonials (`ltxe-testimonials`) — manual, WooCommerce review, or comment
   sources; carousel/grid/single; optional AggregateRating schema.
 * Add: FAQ Accordion (`ltxe-faq`) with keyboard navigation and optional FAQPage
   schema. Existing FAQ Schema (`ee-faq-schema`) is unchanged.
 * Add: Team Members, Icon Box, and Call to Action widgets (flip/hover effects respect
   reduced motion).
 * Add: Social Share, Back to Top, Cookie Consent, Sticky Wrapper, and Dark Mode
   Toggle.
 * Add: ACF Free dynamic tags, block patterns, editor SEO hints, and Generate alt
   text via the WordPress AI Client.
 * Add: Informational Premium catalog on **Add-on features** when the separate Premium
   plugin is not active (hidden after Premium is activated).
 * Add: Playground demo pages for the new widgets; public docs at extrasforelementor.
   com/docs.
 * Note: 2.6–2.8 work (Lottie, calendar feeds, pricing, progress, countdown, video
   playlist, gallery/tabs/SVG upgrades) is included in this directory release. See
   those version headings for detail.

#### 2.8.4

 * Fix: Tabs first panel is visible again (`hidden="false"` still hid it), and tab
   icons no longer render at full SVG size over the labels.

#### 2.8.3

 * Fix: Hotspots now bind click/hover tooltips when Elementor Improved Asset Loading
   prints LandTech scripts after `elementor/frontend/init`.

#### 2.8.2

 * Fix: Inline SVG now fetches and injects the SVG from `data-url` even when Elementor
   Improved Asset Loading prints scripts after `elementor/frontend/init`.
 * Fix: Calendar month grid paints days when Schedule-X leaves the wrapper empty,
   and Temporal date-only strings no longer abort month generation.
 * Fix: Multiple Popup widgets on one page no longer share a single GLightbox instance,
   so click triggers work after a delay popup.

#### 2.8.1

 * Fix: Print per-widget CSS/JS on pages that use Elementor Improved Asset Loading
   so Progress Bar, Calendar, Countdown, and other 2.8 widgets initialize on the
   frontend.
 * Fix: Calendar Schedule-X now self-boots without the legacy frontend.js bundle.

#### 2.8.0

 * Add: Pricing Table and Pricing Toggle widgets with monthly/annual switch (`ltxe_pricing_toggle_changed`)
   and optional WooCommerce add-to-cart when WooCommerce is active.
 * Add: Star Rating widget with half-star display, review count, and optional AggregateRating
   schema.
 * Add: Video Playlist widget (YouTube, Vimeo, self-hosted MP4) under the media-
   player module. Embeds are built with DOM APIs, not innerHTML.

#### 2.7.0

 * Add: Progress Bar, Countdown (fixed datetime), and Reading Progress widgets.
 * Add: Hotspot tooltip content types — Elementor template and image — alongside
   existing text.
 * Add: Tabs vertical orientation, mobile accordion, and hash / `?tab=` deep linking.
 * Add: Gallery video tiles (GLightbox) and client-side load more / infinite / numbered
   pagination for manual galleries.
 * Add: Inline SVG per-path colors and draw/fade/scale/rotate animations (respects
   reduced motion).
 * Add: Image Comparison vertical drag and start-position control.

#### 2.6.0

 * Add: Lottie playback triggers (scroll, scroll-scrub, hover, click), speed, direction,
   and segment play via bundled lottie-web, with the existing lottie-player path
   kept for simple autoplay.
 * Add: Calendar sources for iCal / Google Calendar URLs, The Events Calendar, and
   WooCommerce Bookings (when those plugins are active).
 * Add: Popup delay, scroll-percentage, inactivity triggers, and cookie/session 
   suppression.
 * Add: Per-widget frontend script loading (`LTXE_FRONTEND_SPLIT`). Shared helpers
   live in `frontend-core.js`; the previous monolithic `frontend.js` stays registered
   for one major version and loads only when a widget still depends on it.

#### 2.5.13

 * Fix: Schema output kept camelCase schema.org property names intact. Property 
   keys were passed through `sanitize_key()`, which lowercased them (`mainEntity`
   became `mainentity`), so the `EE FAQ Schema` widget never printed its FAQPage
   JSON-LD, and breadcrumb `itemListElement`, organization `sameAs` and event `startDate`/`
   endDate` / `eventStatus` / `eventAttendanceMode` properties were emitted with
   invalid names. Keys are now stripped to letters, digits, `_`, `-` and `@` without
   changing case.

#### 2.5.12

 * Update: Bundled anime.js upgraded from 4.0.2 to 4.5.0 (MIT), using the upstream
   UMD bundles. Every function the plugin’s animation helpers call is unchanged,
   so existing widget animations keep working.
 * Fix: `TweenMax.killTweensOf()` in the animation shim now actually stops running
   animations (anime.js 4.5.0 exposes `remove`, which 4.0.2 did not). Hotspot tooltips
   that are hovered in and out quickly no longer let the previous show/hide animation
   keep running.

#### 2.5.11

 * Fix: `EE Calendar` grid renders as a `<table>` at desktop widths and did not 
   force any responsive layout. On viewports 767 px and under, the calendar container
   now becomes a horizontally scrollable block so a full month grid does not push
   the page sideways on phones, while the day cells retain their existing typography
   and styling.
 * Fix: `EE Gallery` with `Layout: Slider` set to the vertical direction used a 
   400 px fixed inline height. On viewports 767 px and under, the vertical slider
   height now falls back to `50dvh` (with a `50vh` fallback for older browsers) 
   so the slider never claims more than half of a phone’s visible height, and the
   aspect ratio can be reset with a normal Elementor `height` control override.
 * Fix: `EE Image Comparison` output stretched to the widget’s rendered width without
   constraining the underlying `<img>` elements, so a landscape image inside a narrow
   phone column could grow past the widget frame. On viewports 767 px and under,
   both images are now clamped to `width: 100%` with `object-fit: cover` so the 
   comparison stays inside the widget column regardless of the source image dimensions.
 * Fix: `EE Popup` and `EE Age Gate` opened via Magnific Popup used the library’s
   default max-width and no safe-area handling, which on phones ran the close button
   under the browser chrome / notch and cropped tall popups. On viewports 767 px
   and under, popup content is now clamped to `calc(100vw - 32px)` and its bottom
   padding respects `env(safe-area-inset-bottom)` so the popup fits inside the visible
   viewport and the close button stays reachable.
 * Fix: `EE Hotspots` positioning is set with `transform: translate(-50%, -50%) 
   scale(N)` from the widget’s controls, and at very small `N` values (< 0.5) the
   resulting interactive footprint dropped below WCAG 2.5.8’s 24×24 px minimum. 
   Each hotspot now enforces a 24 px minimum click target (with the scaled visual
   centred inside it) on viewports 767 px and under, without changing the visible
   dot / icon size the editor configured.
 * Fix: `EE Slide Menu` submenu triggers (`.ee-menu__arrow`) had a 20 px tap target—
   below WCAG 2.5.8. The arrow now enforces a 24 px minimum interactive box at every
   viewport (with `box-sizing: border-box`), while the arrow glyph itself is unchanged.
 * Fix: `EE Google Map` navigation UI positioned at `bottom` sat under the browser
   chrome and phone-notch inset. The bottom-positioned UI now respects `env(safe-
   area-inset-bottom)` and is clamped to `calc(100vw - 32px)` so it stays fully 
   on-screen on phones.
 * Fix: `EE Lottie` output previously carried an inline `style="width:100%;max-width:
   480px;"` attribute on `<lottie-player>`, which conflicted with responsive Elementor`
   width`/`max-width` controls. The inline attribute has been removed and the same
   defaults are now provided by the bundled Wave 4 CSS, so Elementor’s own size 
   controls take precedence when set.

#### 2.5.10

 * Fix: `EE Devices Extended` widget’s laptop, desktop, and window frames are 645,
   895 and 1000 px wide respectively, which was pushing the page sideways on phones
   because the widget carries no responsive rule. On viewports 767 px and under,
   each device frame is now capped to the column width while its aspect ratio (set
   via `padding-bottom` percentages on `.ee-device__media__inner`) is preserved,
   so the frame scales down instead of overflowing.
 * Fix: `EE Swiper`-based sliders using the `--outside` navigation-position skin
   had their prev/next arrows placed at `left: -100px` and `right: -100px`, which
   put them off the phone viewport with no other way to advance the slide. On viewports
   767 px and under, both arrows now sit 8 px inside the container. Larger breakpoints
   are unchanged.
 * Fix: `EE Scroll Indicator` bar-skin markers had a 6 px tap target — below the
   24 px minimum in WCAG 2.5.8. On viewports 767 px and under, the surrounding `
   <a>` element now expands to a 24 px minimum height with the 6 px bar centred 
   vertically inside it. The visible bar height is unchanged.
 * Fix: `EE Search Form` `--expand` skin animates open to a fixed 300 px, which 
   overflowed narrow phone viewports and clipped the input. On viewports 767 px 
   and under, the expanded width is now clamped to `calc(100vw - 32px)` so it stays
   inside the visible area. Above 767 px the 300 px width still applies.
 * Fix: `EE Switcher` `--overlay` skin has 48 px of inner padding on its content
   pane, which wasted horizontal space on phones. On viewports 767 px and under,
   the padding is reduced to 24 px.
 * Fix: `EE Offcanvas` slidebar defaults to 50% of the viewport width, which is 
   roughly 240 px on a 480 px phone — too narrow to be usable for menu or content
   layouts. On viewports 480 px and under, the slidebar now takes the full viewport
   width. Above 480 px the 50% width is unchanged, and any user-set width still 
   overrides it.
 * Fix: `EE Live Data Table` pagination Prev/Next buttons had a 6 px vertical padding
   that made them ~12 px tall, below the WCAG 2.5.8 24×24 px minimum. The buttons
   now enforce a 24×24 minimum interactive box (with `box-sizing: border-box`) at
   every viewport; the visual button size does not change on desktop.

#### 2.5.9

 * Change: The Tabs and Table of Contents widgets no longer carry controls that 
   were registered in a disabled state. The options that were only offered when 
   a paid add-on was installed have been removed from this plugin entirely and are
   now supplied by that add-on instead, so nothing here ships switched off waiting
   to be unlocked.
 * Add: Extension points so an add-on can restore those options without this plugin
   needing to know about it — the `landtech_extras/tabs/register_repeater_controls`
   action, the `landtech_extras/tabs/wrapper_attributes` and `landtech_extras/tabs/
   tab_label_html` filters, the `landtech_extras/toc/wrapper_attributes` filter,
   and the `landtech_extras/toc/before_list` action. The Tabs and Table of Contents
   scripts now also fire `ltxe:tabs:activated` and `ltxe:toc:built`.
 * Fix: The Tabs widget no longer loads the anime.js library. It was declared as
   a hard script dependency but nothing in this plugin used it.
 * Fix: The Tabs slug field no longer describes `?tab=slug` deep links as a paid
   feature. They have always worked here.

#### 2.5.8

 * Fix: Table of Contents “Sticky left” and “Sticky right” layouts now run full 
   width and in normal flow on phones. The 240px float previously left body text
   about fifteen characters wide, and the widget has no responsive controls to work
   around it.
 * Fix: Table of Contents sticky height now uses `dvh` so it cannot exceed the visible
   area on mobile browsers, where `vh` resolves against the larger address-bar-hidden
   viewport.
 * Fix: Audio and video player seek bars can now be dragged to scrub on touch devices.
   Only mouse events were bound, so tapping worked but dragging did nothing. Volume
   sliders gained the same handling for tablets.
 * Fix: Audio and video player seek bars and their play, previous, next and rewind
   buttons now meet the 24px minimum touch target in WCAG 2.5.8. The controls row
   centres its items, so each was only as tall as its glyph.
 * Fix: Off-canvas floating trigger placed along the bottom edge now respects `env(
   safe-area-inset-bottom)`, so it no longer sits under the gesture bar on phones
   that reserve space there.
 * Fix: The audio and video player scripts are now minified by the documented build
   pipeline, so their `.min.js` files can no longer drift away from the sources 
   they are built from.

#### 2.5.7

 * Fix: Admin menu priority changed from 200 to 5 so the “Elementor Extras” top-
   level menu item is registered in `$menu` before premium submenus (priority 30–
   60) attach to it. Fixes 404/wrong-URL errors for all premium lane menu items 
   when the premium add-on is also active.

#### 2.5.6

 * Add: **Elementor Extras** top-level admin menu item in the WordPress sidebar,
   positioned immediately after Elementor (position 26). LandTech Extras settings
   now appear under their own dedicated parent instead of being nested inside the
   Elementor submenu. When the Premium add-on is also active, all premium lanes (
   license, Premium Lanes, Performance, Social Proof, Cross-Site Clipboard, etc.)
   appear as additional children under the same top-level item.

#### 2.5.5

 * Add: WordPress Playground demo pages for EE Tabs (`demo-tabs`) and Table of Contents(`
   demo-table-of-contents`).
 * Improved: Playground Search Form demo description mentions include/exclude restriction
   modes.

#### 2.5.4

 * Fix: Short description in readme.txt shortened to WordPress.org 150-character
   limit (directory listing was truncated on import).

#### 2.5.3

 * Fix: WordPress.org Plugin Check — canonical `readme.txt` filename; rename bundled`@
   js-temporal/polyfill` file so it is not flagged as core `polyfill.min.js`.
 * Fix: Sanitize widget preset AJAX JSON payloads; PHPCS for Search Form restriction
   mode controls and pre-6.4 autoload option fallback.
 * Improved: Plugin header **Elementor tested up to** and **Elementor Pro tested
   up to** 4.3.2.

#### 2.5.2

 * Add: EE Tabs widget (`ee-tabs`) with horizontal tabs, repeater content, and template
   slots.
 * Add: EE Table of Contents widget (`ee-table-of-contents`) with page-scope heading
   scan.
 * Add: Search Form **Include only** restriction mode for categories and other taxonomies(
   whitelist terms instead of excluding many categories site-wide).
 * Add: Search Form **Restriction mode** for post types (include or exclude lists).
 * Fix: Hidden Search Form restrictions send compact include/exclude payloads in`
   ltxe_search_query` (shorter search result URLs; exclude mode uses NOT IN instead
   of listing every allowed term).
 * Fix: Search Form Include/Exclude term pickers list categories again in the Elementor
   editor (Select2 options restored; editor REST helper for saved slugs).
 * Improved: Search Form **Restrictions & Filters** loads up to 500 terms per taxonomy
   in control options (sorted by name) for sites with large category lists.

#### 2.4.4

 * Fix: Ship `assets/js/viewport-bridge.js` with the free plugin so Premium viewport
   display conditions no longer 404 the script on frontend.
 * Add: Viewport display condition (mobile/tablet/desktop) and breakpoint helpers
   for WordPress 7.0+ visibility bridge.

#### 2.4.3

 * Fix: Tooltip extension no longer triggers PHP warnings when `tooltip_enable` 
   is unset on a widget.
 * Fix: Posts and Timeline widgets load `Posts_Base` before class declaration to
   prevent fatal errors on frontend.
 * Fix: Widget registration loads class files before calling static methods, preventing
   fatals for FAQ Schema and other widgets.
 * Fix: Autoloader uses `require_once` for reliable class loading.
 * Improved: Zip build verifies `posts-base.php`, `faq-schema.php`, and `schema-
   validator.php` are included in releases.

#### 2.4.2

 * Fix: Activation redirect and version-tracking options use `autoload = no` to 
   avoid loading one-shot flags on every request.

#### 2.4.1

 * Remove: **CLNDR** library and legacy calendar markup/CSS after Schedule-X migration.
 * Fix: Calendar widget wires **First Day**, **Earliest/Latest Month**, and **Default
   Month** settings to Schedule-X.
 * Remove: Dead Elementor style controls for CLNDR-era navigation, header, days,
   and compact event list UI.
 * Improved: **Organization** schema validation (dedicated rules when @type is Organization).
 * Add: Shared `Schema_Builder` helpers for **Organization** and **Event** JSON-
   LD (consumed by Premium Schema Suite).

#### 2.4.0

 * Fix: **Unfold widget** — anime.js v4 timeline and height animations work again
   via updated GSAP shim.
 * Fix: **Heading animations** — `TweenMax.from()` presets use anime.js v4 `animate(
   targets, params)` API.
 * Add: **Widget preset import/export** — export/import current widget settings 
   as JSON from the Elementor editor (nonce + capability gated).
 * Add: **Editor widget health hints** — dismissible panel notices for missing Maps
   API key, empty gallery, and similar local checks.
 * Add: **Admin command palette (lite)** — shortcuts to LandTech settings and documentation
   when WordPress `wp-commands` is available.
 * Improved: **Accessibility batch 1** — Google Map, Audio Player, Popup, Offcanvas,
   and Posts Extra carousel focus/ARIA/keyboard/reduced-motion support.
 * Improved: **Posts Extra grid** — equal-height cards and responsive column gaps(
   CSS only).
 * Improved: **Element HTML cache** — opt-in caching for Table, Inline SVG, and 
   Text Divider static widgets.

#### 2.3.3

 * Fix: Audio Player widget no longer fatal-errors Elementor preview when reading`
   waveform_skin` in `get_script_depends()` before settings hydrate.
 * Add: `Extras_Widget::ltxe_try_get_settings()` helpers for safe asset dependency
   registration during preview bootstrap.

#### 2.3.2

 * Fix: Google Map widget no longer fatal-errors Elementor preview when settings
   are not hydrated yet (`get_style_depends` / `get_script_depends` use safe settings
   read).

#### 2.3.1

 * Fix: Register `landtech-extras-frontend` styles only when `elementor-frontend`
   is registered (WordPress 6.9.1+ dependency notice).
 * Fix: Search Form skin null-safe `trim()` on empty button label text.
 * Add: Add-on features tab shows Premium add-on version and feature toggle count
   when the add-on is active.
 * Add: `landtech_extras/acf_gallery_bridge_enabled` filter hook for Premium entitlement
   gating of ACF gallery controls.

#### 2.3.0

 * Phase 0: TableSorter v2.32.0; Isotope/Packery non-pkgd builds; Leaflet OpenStreetMap
   map provider; library metadata alignment.
 * Phase 1: Toggle FAQPage JSON-LD; display conditions (cookie, UTM presets, business
   hours); Table pagination and CSV paste import in the editor.
 * Phase 2: Calendar migrated to Schedule-X; anime.js v4 with updated animation 
   helpers; Heading Extra entrance animation presets; Audio Player optional WaveSurfer
   waveform skin; video player native playback-rate support; audio-player header
   typo fix.
 * Phase 3: Posts Extra list, featured-grid, and timeline layout skins; Search Form
   live AJAX results via public REST route; new Lottie widget.
 * Playground: demo pages for Lottie, FAQ Schema, Posts list/featured-grid/timeline
   skins, paginated Table, OpenStreetMap map provider, and live search.

#### 2.2.101

 * Docs: Breadcrumbs widget documents optional **BreadcrumbList** structured data(
   microdata) when **Structured data** is enabled in widget settings.

#### 2.2.100

 * Fix: Devices widget scrollable portrait/landscape screens — CSS targeted non-
   existent class names; scrolling now works when enabled.
 * Fix: Devices orientation toggle no longer shows a blank landscape screen when
   no landscape screenshot is set (falls back to portrait image).
 * Fix: Playground Devices demo uses tall portrait and landscape screenshots so 
   scroll and rotate are demonstrable.

#### 2.2.99

 * Fix: Shorten readme short description to meet WordPress.org 150-character limit.

#### 2.2.98

 * Fix: Playground Button Group demo ships fallback page CSS (padding, colors, effect
   backgrounds) so hover effects are visible when Elementor post CSS is incomplete.
 * Fix: Playground Switcher demo shows Design / Build / Launch on the frontend —
   entrance animation now falls back when the appear plugin does not fire; nav stays
   visible on all breakpoints.
 * Fix: Playground Devices demo seeds a phone screenshot, scrollable screen content,
   and orientation toggle instead of an empty mockup.

#### 2.2.97

 * Docs: readme SEO — short description, widget catalog, and FAQ entries for Elementor
   Extras / Extras for Elementor migration and replacement terminology.

#### 2.2.96

 * Add: Optional sanitized SVG uploads — Elementor  LandTech Extras  Advanced  Allow
   SVG uploads (admin opt-in; files sanitized on upload; works with Elementor media
   controls).
 * Add: Inline SVG widget **Source** control — choose Media Library or **Custom 
   URL** so you can link to an .svg without uploading through WordPress.
 * Fix: Playground Inline SVG demo enables Override Color and uses the bundled SVG
   URL source.

#### 2.2.95

 * Fix: Buttons widget hover effects did not animate because transition CSS targeted
   the wrong pseudo-elements; base styles now apply transitions to `.ee-button:before`/`:
   after` with sensible defaults.
 * Fix: Buttons without a link now use a no-op `#` href (with preventDefault) so
   click and hover behave consistently on the frontend.
 * Fix: Custom button effect modifier classes (direction, entrance) fall back to
   control defaults when unset so Clone/Background effects are not stuck in a neutral
   state.
 * Fix: Button Group tooltip init no longer throws when tooltip delay settings are
   absent (non-tooltip buttons).
 * Fix: Playground demo pages regenerate Elementor post CSS after seeding so per-
   button effect colors and timing apply.

#### 2.2.94

 * Fix: Calendar event clicks did nothing on the Default skin because the events
   panel stayed `display: none` even when `show-events` was toggled; the panel now
   overlays the month view when a day with events is clicked.
 * Fix: Calendar event title links without a URL now open the events panel instead
   of doing nothing.
 * Fix: Playground Calendar demo seeds compact skin with sample manual events so
   click-to-reveal behavior is testable.

#### 2.2.93

 * Fix: Switcher widget stayed blank on the published frontend because entrance 
   animation hides all slides until jQuery Appear fires; above-the-fold widgets 
   now trigger appear immediately and nav/arrows opacity animations accept combined
   jQuery targets.
 * Fix: anime.js helper now resolves arrays of jQuery collections (nav + arrows)
   for TweenMax.set/to calls used by Switcher.

#### 2.2.92

 * Fix: Scroll Indicator progress never updated because jQuery `.data('start-offset')`/`.
   data('end-offset')` do not read HTML `data-start-offset` attributes (camelCase
   keys required); offsets are now read reliably and full-page body tracking uses
   document height.
 * Fix: Playground Scroll Indicator demo seeds three anchored sections (List skin)
   with matching heading CSS IDs and scrollable content between them.

#### 2.2.91

 * Fix: Age Gate and Popup modals showed a blank white box because legacy Magnific
   Popup animation CSS hides `.mfp-with-anim` until `.mfp-ready` is on the container;
   GLightbox now adds that class on open.
 * Fix: Playground Age Gate demo seeds title, description, required age, button 
   label, and classic skin.

#### 2.2.90

 * Fix: Popup and Age Gate modals opened empty because inline content kept `mfp-
   hide` / `glightbox-hide` (`display: none !important`) after the GLightbox migration;
   hide classes are now stripped before inline slides load.
 * Fix: Playground Popup demo seeds title, body copy, classic skin, and an Open 
   modal click trigger.

#### 2.2.89

 * Fix: Unfold open/close animation failed because the anime.js timeline shim did
   not return the timeline from chained `.to()` calls (GSAP-style `.add().to().to()`).
 * Fix: Playground Unfold demo now seeds multi-paragraph content, 35% visible height,
   and Read more / Read less labels.

#### 2.2.88

 * Fix: Switcher widget stayed invisible on the frontend because the anime.js timeline
   shim did not understand GSAP label positions (`animateAll`, `animateAll+=`, `-
   =`); Switcher and Unfold animations now resolve correctly.
 * Fix: Playground Switcher demo seeds three panels with images, classic skin, and
   entrance animation off for a reliable Live Preview.

#### 2.2.87

 * Fix: Playground Inline SVG demo now ships a bundled SVG URL plus color, sizing,
   and hover settings (empty settings previously rendered a blank frontend).

#### 2.2.86

 * Fix: Playground Button Group demo now seeds Clone, Flip, Background, 3D, and 
   Cube hover effects (custom per-button styling was previously unset).

#### 2.2.85

 * Fix: Gallery Slider thumbnail clicks now use explicit slide indexes, Swiper loop/
   fade/RTL handling, and auto-height updates so the preview image stays visible
   when navigating.
 * Fix: Gallery Slider preview skips broken attachment URLs and falls back to the
   gallery item URL when needed.
 * Fix: Playground Gallery Slider demo enables Elementor lightbox on preview images.

#### 2.2.84

 * Fix: Playground critical error — store `_elementor_page_settings` as a PHP array(
   not JSON text) so Elementor page rendering does not fatal on PHP 8.
 * Fix: Playground seeder sets the admin user during blueprint runPHP so Elementor
   document saves succeed.

#### 2.2.83

 * Fix: Playground demo homepage rebuilt with styled CSS hero, category sections,
   and card links to all 28 free widget demos (Elementor HTML widget).
 * Fix: Demo pages use the Elementor header/footer template and hide the theme page
   title for cleaner previews.

#### 2.2.82

 * Fix: Timeline demo works on WordPress Playground — widget registers on free Elementor(
   custom items); Posts source still requires Elementor Pro.
 * Fix: Playground Timeline demo seeds custom milestone items with sample content
   and images.

#### 2.2.81

 * Fix: Posts Extra demo works on WordPress Playground (free Elementor) via a standard`
   WP_Query` fallback when Elementor Pro query controls are unavailable; demo seeder
   now includes full grid/query settings.
 * Fix: Posts Extra registers on free Elementor installs for basic post grids; advanced
   Query panel still requires Elementor Pro.

#### 2.2.80

 * Fix: Playground demo pages (including Switcher Demo) resolve at pretty permalinks
   after seeding via `flush_rewrite_rules()`.
 * Fix: Switcher and Toggle Element demo pages seed with default panel content instead
   of empty widget settings.
 * Fix: Demo pages save Elementor canvas data through the Elementor document API
   when available.

#### 2.2.79

 * Fix: Gallery Slider — initialize Swiper through Elementor’s async loader, correct
   thumbnail `slideTo` / `slideToLoop` handling, and guard against uninitialized
   instances.
 * Fix: `anime.js` unminified build no longer throws `module is not defined` in 
   the browser when `SCRIPT_DEBUG` is enabled.

#### 2.2.78

 * **Try It Live demos** — Playground blueprint seeds a demo homepage, one Elementor
   page per free widget (28 demos), sample media/posts, and a grouped navigation
   menu via `includes/playground-demo-seeder.php`.

#### 2.2.77

 * Fix: WordPress Playground **Try It Live** link uses the public WordPress.org 
   SVN blueprint URL (GitHub source repo is private).

#### 2.2.76

 * **Try It Live** — WordPress Playground blueprint (`blueprint.json`, `assets/blueprints/
   blueprint.json`), readme **Try It Live – Preview This Plugin Instantly** section,
   and **Live demo** links on the Plugins screen.

#### 2.2.75

 * WordPress.org soft-warning remediation: standardized plugin prefixes on dismissible
   notice transients (`landtech-extras-*`), search-form action hooks (`landtech_extras/…`),
   Posts pagination query var (`ltxe-page`), and Elementor Select2 script handle(`
   landtech-extras-elementor-select2`); expanded **External Services** readme (browser
   vs server requests, exact hostnames); fixed search-form dynamic hook registration.

#### 2.2.74

 * WordPress.org review follow-up: removed unnecessary `wp-admin/includes/plugin.
   php` load from bootstrap guard; all `is_plugin_active()` call sites use guarded`
   landtech_extras_require_plugin_api()`; Infinite Scroll core build strips jQuery
   bridge code (vanilla DOM API only).

#### 2.2.73

 * WordPress.org review (T2): ACF Gallery bridge is fully enabled when Advanced 
   Custom Fields is active (removed add-on entitlement gate); fixed PHP syntax error
   in template loop background-image module; removed unnecessary `wp-admin/includes/
   plugin.php` include; upgraded GLightbox to 3.3.1; Infinite Scroll build comment
   updated to avoid bundled-jQuery scanner false positive.

#### 2.2.72

 * WordPress.org review follow-up: Infinite Scroll rebuilt as core-only bundle (
   no jquery-bridget); Posts Classic uses `new InfiniteScroll()` API; Isotope/Packery
   register with WordPress core jQuery dependency; all plugin script handles prefixed
   with `landtech-extras-`.

#### 2.2.71

 * WordPress.org review remediation: replaced unmaintained Magnific Popup with GLightbox(
   MIT); removed GPL-incompatible GreenSock/GSAP, SplitText, and CustomEase in favor
   of anime.js + Splitting.js; Infinite Scroll now registers with WordPress core
   jQuery; template loop background CSS uses `wp_add_inline_style()` instead of 
   inline `<style>` tags; prefixed admin dismiss notice keys; removed Load TweenMax
   setting.

#### 2.2.70

 * WordPress.org submission readiness: API key/token settings use identity sanitization(
   not `sanitize_text_field()`); expanded **Development** and third-party library
   documentation in readme; distribution zip output to `DIST/`; removed dead stub
   module folders.
 * Admin: dismissible notice AJAX hardened (nonce + capability).

#### 2.2.69

 * Posts Extra (Classic): Packery **second item width** control and `.ltxee-packery-
   second` span class for Metro tiles (Packery); default CSS in `assets/css/frontend.
   css` and `frontend-rtl.css`.
 * Build: `package.json` includes `npm run build:assets` to regenerate minified 
   frontend CSS/JS (see **Development**).

#### 2.2.68

 * Posts Extra (Classic): responsive **Packery: first item width** when layout is
   Metro tiles (Packery); overrides default width for `.ltxee-packery-featured` 
   per breakpoint.

#### 2.2.65

 * WordPress **6.7+**: when no `landtech-extras-for-elementor-{locale}.mo` exists,
   assign `NOOP_Translations` for the text domain so gettext on `plugins_loaded`
   does not hit just-in-time loading before `after_setup_theme`.

#### 2.2.64

 * WordPress **6.7+**: load first readable `.mo` via `load_textdomain()` on `plugins_loaded`(
   early priority) so add-on/embeddings hooks avoid “translation loading triggered
   too early”.

#### 2.2.63 / 2.2.62

 * Superseded text-domain timing fixes for WordPress 6.7+ — use **2.2.64+**.

#### 2.2.61

 * Gallery widget: removed invalid `packery-mode` script dependency; cleaned redundant
   vendor stubs (Posts Packery stack unchanged).

#### 2.2.60

 * Metro tiles (**Packery**): Packery + Isotope wiring, `ltxee-packery-featured`,
   Phase 4 layout policy / grandfather scan updates.

#### 2.2.59

 * Posts Base: `landtech_extras/posts/advanced_query_args`, `query_paged`, `set_query_args`
   hooks before `set_query()` (add-on REST facets / advanced query).

#### 2.2.58

 * **`metro`** layout (Isotope fitRows), `landtech_extras/posts/grid_layout_mode_choices`
   filter, resize-safe Isotope relayout, Phase 4 `metro` handling.

#### 2.2.57

 * Posts Extra preset skins use Classic loop handler; editor loads Isotope only 
   when the document needs it; `landtech_extras/settings/features_fields` for add-
   on settings.

#### 2.2.56

 * Devices widget: landscape/portrait and `Group_Control_Image_Size` guards; correct
   image URL validation for requested field.

#### 2.2.55

 * Posts Extra: defer Isotope until needed; Phase 4 opt-in filters for add-on masonry
   grandfather.

#### 2.2.54

 * ACF gallery bridge (**ACF** required): Gallery / Gallery Slider ACF Gallery source(`
   includes/gallery/acf-gallery-bridge.php`).

#### 2.2.53+ (fork)

 * **LandTech Extras for Elementor** on WordPress.org: External Services / BYOK 
   readme disclosure, org–add-on coexistence (`LANDTECH_EXTRAS_RUNTIME_FAMILY`),
   text domain `landtech-extras-for-elementor`, GPLv3, directory updates only (no
   custom org updater).

#### Earlier releases

 * Releases **2.2.52 and older** inherit the historical **Elementor Extras** changelog(
   widgets, extensions, Elementor compatibility). The full line-by-line history 
   is omitted here to satisfy WordPress.org’s **5,000-character** Changelog limit;
   consult Git/SVN or shipped release archives for the complete record.

## Meta

 *  Version **2.9.0**
 *  Last updated **4 hours ago**
 *  Active installations **80+**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/landtech-extras-for-elementor/)
 * Tags
 * [addons](https://twd.wordpress.org/plugins/tags/addons/)[elementor](https://twd.wordpress.org/plugins/tags/elementor/)
   [extensions](https://twd.wordpress.org/plugins/tags/extensions/)[page builder](https://twd.wordpress.org/plugins/tags/page-builder/)
   [widgets](https://twd.wordpress.org/plugins/tags/widgets/)
 *  [Advanced View](https://twd.wordpress.org/plugins/landtech-extras-for-elementor/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/landtech-extras-for-elementor/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/landtech-extras-for-elementor/reviews/)

## Contributors

 *   [ Randy Breland ](https://profiles.wordpress.org/brelandr/)

## Support

Issues resolved in last two months:

     2 out of 2

 [View support forum](https://wordpress.org/support/plugin/landtech-extras-for-elementor/)