GMC Instagram Feed Gallery — Documentation (WordPress)
GMC Instagram Feed Gallery displays your Instagram posts and reels in a responsive gallery on your own WordPress site. It works in two connection modes: paste individual post or reel URLs with no access token required, or connect an Instagram Business / Creator account through the Meta Graph API for an auto-updating feed. It is aimed at brands, hotels, restaurants, tour operators and content sites that want their Instagram content on pages they own, with full control over layout, loading and privacy.
Requirements: WordPress 6.0 or newer, PHP 8.1 or newer.
Installation
- Download the plugin
.zipfrom your purchase email or your account. Keep it zipped. - In your WordPress dashboard go to Plugins → Add New Plugin → Upload Plugin.
- Choose the
.zipfile, click Install Now, then Activate. - After activation the plugin's settings screen appears in the admin menu.
Configuration
Open the plugin's admin screen and decide which connection mode you need:
- Manual mode (no token): nothing to connect. You supply Instagram post or reel URLs directly, either in a saved gallery or in the shortcode itself. This is the fastest way to get a gallery live.
- Account feed (Graph API): connect an Instagram Business or Creator account through the Meta Graph API. Once connected, the gallery pulls your latest posts automatically. A global-connection mode lets saved galleries reuse the same account connection instead of configuring it per gallery.
When creating a saved gallery, the editor offers Quick setup presets, collapsed advanced options, a live layout preview and a copy-ready shortcode, so a basic gallery takes a couple of minutes. The main options to review:
- Layout: grid or masonry, with several visual styles. The showcase style uses a fixed three-column default and reveals caption, likes/comments and date on hover.
- Colours: accent and overlay colour pickers are available both in the gallery editor and in the global plugin settings.
- Filters: photo/video media filters and text include / exclude rules to curate which items appear.
- Loading: how many items load initially, plus Load More or infinite scroll.
- Extras: captions, the built-in local lightbox, and an optional call-to-action.
- Local media cache: optionally cache media locally for a more GDPR-oriented setup.
Using the plugin
Placing a gallery with shortcodes
Drop a shortcode into any post, page or shortcode-capable block. For a manual gallery from post/reel URLs:
[gmcinstagramgallery urls="https://www.instagram.com/p/POST_ID/" columns="3"]
For a connected account feed:
[gmcinstagram limit="24" columns="3" infinite="1"]
Common attributes include columns (grid columns), limit (number of items) and infinite (infinite scroll). Saved galleries show a copy-ready shortcode in the editor, so you can paste it without remembering attributes.
Curating what appears
Use the media filter to show only photos or only videos, and the text include / exclude options to keep or drop items based on their captions. For example, exclude posts containing a hashtag you use for internal content, or include only posts mentioning a campaign tag. Owner-media like and comment counts are shown where available, and video thumbnails are handled automatically.
Frontend behaviour
Visitors see a responsive grid or masonry gallery matching your theme. Clicking an item opens the built-in local lightbox — no redirect to Instagram unless you want one. Depending on your settings, more items load via a Load More button or infinite scroll, and the optional CTA gives the gallery a conversion goal (for example a link to your booking or contact page).
Languages
The plugin ships with English, Italian and Spanish and respects your site's multilingual setup.
Updates & licence
This is a paid product (one-time purchase). After purchase you receive a Download Key with your licence email. Enter it on the plugin's settings screen — the key field is shown after activation under the plugin's own admin menu. The key unlocks licensed one-click updates from the GMC / FuerteventuraTV update server.
Updates are automatic: the plugin checks the update server on its own (roughly every 12 hours) and offers new versions under Plugins or Dashboard → Updates, like any other plugin, as long as your licence is active. You can also re-download the latest build from your account at any time.
The software is released under the GNU GPL. Your purchase covers the official build, one-click updates and support for one site; the licence applies to the wp-gmc-instagram-gallery plugin, while the Joomla edition is sold separately. For multiple sites or client projects, contact us for a volume or agency arrangement.
Support
For help, reply to your purchase email or message us on WhatsApp at +34 633 168 995 (the same line appears in your licence email). Please include:
- the product name and version,
- your WordPress and PHP versions,
- a public URL or a screenshot (with any keys masked).
We answer in English, Italian and Spanish. If the plugin does not work as described and we cannot fix it for you, you can request a refund within 14 days of purchase.
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.


