GMC Instagram Feed Gallery
Product detail · Joomla 5/6 and WordPress 6+
GMC Instagram Feed Gallery
Manual Instagram embeds or Graph API feeds with filters, captions, lightbox and CTA.
Your best Instagram proof becomes a polished gallery that keeps visitors moving toward the next action.
Who it is for
Tour operators, real estate pages, restaurants, schools and creators who need visual proof without a monthly widget subscription.
Choose the calm option: install it once, keep the feed or form under your control, and stop wondering which external widget will change next.
What is inside
- Manual embeds from post/reel URLs without a token
- Instagram Business/Creator Graph API feed
- Grid or masonry layouts with clean, rounded, polaroid or caption styles
- Filters, Load More, infinite scroll, CTA and local media cache
Requirements
- Joomla 5/6 or WordPress 6+
- PHP 8.1+
- Post/reel URLs for manual mode
- Instagram Business/Creator ID and Meta token for Graph mode
Shortcodes
{gmcinstagramgallery urls="https://www.instagram.com/p/POST_ID/" columns="3"}
{gmcinstagramfeed source="graph" limit="12" layout="masonry" style="caption"}
[gmcinstagram limit="24" columns="3" infinite="1" local_media="1"]
Everything included
76 real features, grouped by area — the full depth of the Instagram Feed Gallery, nothing padded.
Content sources & connection modes
- Token-free manual embeds — paste post, reel or TV URLs and get a curated gallery with no access token and no account connection at all.
- Graph API account feed — pull a whole Business or Creator account's media automatically through the official Meta Graph API, so the gallery refreshes itself as you post.
- Built-in URL validation — only genuine
instagram.compost/reel/tv links are accepted; anything else is silently dropped, so a bad paste can't break the page. - Configurable Graph API version, user ID & token — set them from the settings screen; the token travels as an
Authorization: Bearerheader, never exposed in URLs or logs.
Feed sources & discovery
- Multiple feed source modes — pick
own,username(another public business profile via business discovery),tagged, orhashtagper gallery. - Multi-account merge (up to 10) — combine several Instagram account IDs into one feed, merged newest-first, de-duplicated by media ID and capped at your item limit.
- Per-source tokens — each extra account can carry its own access token; accounts without one fall back to the main token.
- Resilient to a dead source — if one account fails it's skipped (serving its own last-good cache when available) while the rest of the feed still renders.
- Opt-in, fail-closed hashtag feeds — hashtag mode stays disabled until you explicitly enable it after Meta App Review, preventing accidental misconfiguration.
Layouts & visual styles
- Responsive grid or masonry — choose a clean uniform grid or a Pinterest-style masonry layout that adapts to every screen size.
- 1–8 columns + adjustable gutter — dial in exactly how dense the gallery is, with per-gallery column count and 0–48 px spacing.
- Square or natural crop — force uniform square tiles or preserve each post's native aspect ratio.
- Full style set —
clean,tiles,rounded,polaroid,caption, plus theme-match, showcase and extra built-in presets for specific looks. - YOOtheme / theme-match preset — inherits your active theme's cards, colours, fonts and hover transitions; on Joomla it emits native UIkit markup (
uk-card/uk-grid/uk-overlay/uk-lightbox) and falls back gracefully on non-UIkit sites. - Carousel / slider mode — render the theme-match preset as a slider (native UIkit
uk-sliderwith arrows, dots and swipe on Joomla; a self-contained scroll-snap slider on WordPress) instead of a grid.
Showcase preset & engagement
- Info-rich showcase style — each tile gets a dark gradient overlay revealing caption, post date and like/comment counts, plus a corner Instagram permalink glyph, replicating premium competitor galleries.
- Hover-reveal overlay — the overlay appears on hover rather than always-on, keeping the grid clean until the visitor engages.
- Accent & overlay colour pickers — set showcase accent and overlay colours per gallery and as global defaults, with values safely validated before they reach CSS.
- Owner like/comment counts — for your own Business/Creator media the gallery shows engagement counts, fetched safely and omitted automatically when Instagram doesn't return them.
- Video & carousel-album badges — video tiles carry a play badge and multi-image posts show a child-count badge, so visitors know there's more inside.
Gallery display & interaction
- Captions on/off — show or hide each post's caption per gallery.
- Built-in local lightbox — full-screen viewer with an info side panel (caption, date, likes/comments, permalink), served from your own site with no external embed script.
- Lightbox-off fallback — with the lightbox disabled, tiles link straight to the Instagram permalink so a tap always reaches the original post.
- Load More & infinite scroll — start with a configurable page size and let visitors load more on click, or stream in automatically as they scroll.
- Content-type tabs — an optional
photos, videos, reelstab bar above the grid filters items client-side by media type. - Album filter chips — define
Label | keywordsalbums to render "All + per-album" chips that filter the grid by caption keyword. - Photo/video media filter — show all media, only photos, or only videos.
- Text include / exclude — keep or drop posts by case-insensitive caption substring, so you curate exactly which media appears.
- Hide specific posts by ID — exclude individual media items you don't want shown, regardless of the feed.
- Configurable call-to-action — add a "Follow us" (or any) button with your own label and https link under the gallery.
- Gallery heading/title — optional header label above the grid.
- Live item count — the header reflects how many items are shown.
Admin & gallery management
- Saved-gallery manager — a real back-office component (Joomla) / custom post type (WordPress) storing many reusable galleries, each with its full display configuration.
- CRUD + duplicate + copy-shortcode — create, edit, delete, clone a saved gallery and copy its ready-made shortcode in one click.
- ID-based embedding — drop a saved gallery anywhere by its id (
{gmcinstagramgallery id="N"}/[gmcinstagramgallery id="N"]) instead of repeating every attribute. - Quick-setup presets — start a new gallery from a preset (simple, showcase, carousel, manual) instead of a blank form.
- Global vs per-gallery connection — reuse the site-wide Instagram connection by default, or override credentials on a specific gallery.
- Collapsed advanced options — day-one fields stay visible; power options tuck into an "Advanced" section to keep the editor approachable.
- Live layout preview — an in-admin panel shows columns/style/crop/carousel/albums with placeholder tiles as you change options, so you can sanity-check before saving.
- Site-wide display defaults — set default limit, columns, layout, style, gutter, crop, captions, lightbox, page size, infinite scroll, CTA and more, so new galleries and bare shortcodes inherit sensible values.
- Joomla ACL permissions — standard Joomla access rules control who can manage galleries.
Connection & setup experience
- Guided setup wizard — a step-by-step onboarding flow walks a new site owner through connecting an account.
- "Test connection" button — validates the connection live against the Graph API with clear, specific error messages (expired/invalid token, wrong account ID, missing permission, rate limit).
- Connect with Instagram (Instagram Login) — log in with Instagram credentials directly, no Facebook Page link required, for any professional account.
- Connect with Facebook (Page flow) — the classic Facebook-Login path with a Page picker for accounts linked to a Facebook Page.
- Easy Connect (via GMC) one-click OAuth — connect Instagram in a single click without your own Meta developer app; you log in on Instagram's own page and the token returns encrypted, stored only on your site (the GMC relay never keeps it).
- Manual token exchange helper — paste a Meta App ID + App Secret and a short-lived token to obtain a permanent Page access token automatically, no manual token extension.
- Automatic token renewal — the 60-day Instagram token is refreshed automatically before it expires, so connected feeds keep working without re-authentication.
- Token-invalid admin notice — if Instagram returns error 190 the plugin flags the token as invalid and shows an admin warning telling you exactly how to fix it.
Privacy, GDPR & security
- Optional local media cache — cache Instagram media on your own domain for a more GDPR-oriented setup, so images and video thumbnails are served from your server, not Instagram's CDN.
- Robust video-thumbnail handling — tiles stay visible even when legacy Instagram video thumbnails are missing or expired.
- SSRF-hardened cache downloads — local-media caching only fetches from an allowlist of genuine Meta CDN hosts (
fbcdn.net,cdninstagram.com,fbsbx.com,akamaihd.net) with content-type validation. - Bearer-header tokens — access tokens travel in an
Authorizationheader, kept out of URLs, query strings and logs. - Whitelisted style/layout tokens & full output escaping — user-supplied style/layout/crop values are validated before reaching CSS class names, and output is escaped throughout — hardened for modern Joomla and current WordPress.
- Clean uninstall — WordPress removal cleans up settings, licence data and cached updater metadata.
Performance & caching
- Last-known-good feed cache — during a Graph API outage the gallery serves the last successfully fetched media from disk instead of blanking a working page.
- Disk-aware media cache — cached images are checked on disk before re-downloading, avoiding a re-fetch of every image on each page view.
- Automatic daily cache purge — a scheduled task (WP cron / throttled Joomla purge) deletes stale cached media older than the cache lifetime (min 7 days), so the cache folder doesn't grow unbounded.
- Configurable cache lifetime & request timeout — tune how long feeds are cached and how long a Graph request may take.
Internationalisation & compatibility
- English, Italian & Spanish out of the box — full UI and front-end strings (admin, wizard, OAuth/Easy-Connect boxes, lightbox, "Load more", album "All" chip) ship translated and compiled.
- Multilingual-site aware — respects the site's multilingual setup.
- Tested on current CMS — Joomla 5.x/6.x and WordPress 6.0–6.8, PHP 8.1+.
Developer & integration
- Four shortcode aliases —
gmcinstagramgallery,gmcinstagram,gmcinstagramfeed,gmcphotostreamall resolve to the same handler (curly braces on Joomla, square brackets on WordPress). - Rich shortcode attribute set — control everything inline (urls, limit, columns, layout, style, gutter, crop, filters, caption, lightbox, carousel, albums, tabs, colours, source, CTA, title, id…); inline values override stored defaults.
- WordPress Gutenberg block — a native block registers the gallery for the block editor alongside the shortcodes.
- Joomla content plugin — drop a gallery straight into any article via the bundled content plugin; a bundled system plugin handles the OAuth callback on a clean admin URL.
- AJAX endpoints — Load More and the OAuth/connect flows run through the CMS's own AJAX layer.
Trust & licensing
- GPLv2 licensed — released under the GNU General Public License v2 or later; you get the official build.
- Self-hosted, your data — the gallery and any cached media live on your own site; manual mode involves no third-party service at all, and with Easy Connect the token is stored only on your site.
- Licensed one-click updates — the extension checks the GMC / FuerteventuraTV update server automatically (~24 h on Joomla, ~12 h on WordPress) and offers new versions through the native updater while the licence is active.
- Download Key delivery — a Download Key arrives by email after purchase and unlocks licensed updates; enter it once on the licence/settings screen.
- Graceful licence grace period — if the licence gateway is briefly unreachable, a previously-licensed site keeps working on its last-known-good entitlement; only transport failures are never long-cached, so a blip never poisons the gate.
- One-site licence + agency option — each purchase covers one site with updates and support; volume/agency arrangements available on request.
- 14-day refund + multilingual support — support and refunds handled in English, Italian and Spanish (WhatsApp line included in the licence email).
Joomla & WordPress
- Joomla — the theme-match preset emits native UIkit/YOOtheme Pro markup (cards, grid, overlay, slider, lightbox); ships as a package (
com_gmc_instagram_feed_gallerycomponent + content plugin + system plugin) with ACL, a Download Key field and the Joomla update server — install only the outerpkg_…zip. - WordPress — equivalent styles are self-contained CSS (no UIkit dependency); saved galleries are a custom post type with a meta-box editor and a Gutenberg block; exposes the per-plugin "Enable auto-updates" toggle and a daily WP-cron cache purge; sold as a separate product from the Joomla edition.
FAQ
- Can I use it without a Meta token?
Yes, manual post and reel URLs work without a token.
- What does Graph API mode add?
Automatic media retrieval, filters, pagination, captions and more controlled galleries.
- Can I add a call to action?
Yes, a CTA label and URL can be configured in shortcode/options.
Privacy notes
Manual embeds load Instagram resources. Graph mode stores metadata in cache and may cache supported media locally.


