Introduction
ENJOY connects your WordPress site to IGDB (Internet Game Database) and lets you import full game data with a search box: cover art, promotional artwork, screenshots, summary, storyline, release date, trailer video, supported languages, age ratings, genres, platforms, game modes, collections, developers, and keywords.
By default it creates its own Games post type, but it can be pointed at any other post type instead — including WooCommerce Products — and it adapts its behavior accordingly (more on that in Section 8).
You can either let the plugin build a complete page layout for you automatically, or take full manual control using shortcodes and Gutenberg blocks. Both approaches are covered in this manual.
Requeriments
You need to make sure that your web host has the minimum WordPress and Elementor requirements to run themes-based sites:
- WordPress installation
- PHP 7.4+
- Basic Knowledge of WordPress
- MySQL version 5.6 and above
- The mod_rewrite Apache module
- The iconv extension with UTF-8 encoding
- HTTPS support
- max_execution_time more than 180, we recommend 300
- memory_limit at least 256M to run plugins without issues
Installation
- In your WordPress admin, go to Plugins → Add New → Upload Plugin.
- Choose the enjoy.zip file and click Install Now.
- Click Activate.
- A new Enjoy menu appears in the left-hand admin sidebar.
No other plugin is required. WooCommerce is entirely optional and only relevant if you choose it as your target post type (Section 8).
Getting Your IGDB API Credentials
IGDB’s API is provided through Twitch. You need two values: an API Key (Client ID) and an Auth Key (Bearer token / Client Secret).
- Go to dev.twitch.tv/console/apps and log in with (or create) a Twitch account.
- Click Register Your Application.
- Give it any name, set the OAuth Redirect URL to your url or localhost, and choose Application Type: Confidential.
- Once created, copy the Client ID — this is your API Key.
- Click New Secret to generate a Client Secret, and use it (or the access token generated from it, depending on your setup) as your Auth Key.
- Paste both values into Enjoy → Settings → IGDB Credentials.
These credentials are free and there is no cost to use the IGDB API under normal usage.
See more detailed info in our post:
Settings Overview
All settings live under Enjoy → Settings in the WordPress admin sidebar.
4.1 IGDB Credentials
Two fields: IGDB API Key (Client ID) and IGDB Auth Key (Bearer Token). Both are required for the search box and the import to work. See Section 3 for how to obtain them.
4.2 Post Type
A dropdown listing Games (the plugin’s own built-in post type) plus every other public post type already registered on your site — including WooCommerce Products, if WooCommerce is active, and any custom post type you’ve created with a tool like CPT UI.
Whichever post type you select here is where the IGDB search box, the metabox, and the import will run. If you select anything other than Games, the Games post type itself is never registered on your site — there’s no unused leftover post type cluttering your admin menu.
4.3 Frontend Template
This is the single most important setting for how your site will look. It caters to two very different kinds of users:
- Turn it ON if you want a complete, ready-made page layout with zero manual work: a hero image (cover art overlaid on a background), release date, alternative title, age ratings, genres, summary, all other taxonomies, storyline, supported languages, trailer video, and a screenshots gallery with lightbox — all in a clean, minimal design, automatically appended to every imported item’s page.
- Leave it OFF if you’d rather design the page yourself using the shortcodes (Section 10) or Gutenberg blocks (Section 11), in the block editor, Elementor, or any other page builder.
There’s also a Hero background image choice (Artwork or Screenshot) — this picks which image is used as the darkened background behind the poster in the hero. If the chosen type is missing for a given game, the plugin automatically falls back to the other one; if neither exists, a soft pastel gradient is used instead so the hero never looks broken.
Note for WooCommerce: if your target post type is Products, turning this setting on does not append anything to the product description. Instead, Enjoy adds its own “Game Info” tab next to the native Description and Reviews tabs. That tab does not include the Artwork image or the screenshots gallery, since WooCommerce already has its own main product image and native gallery for that purpose (screenshots are automatically merged into it — see Section 8).
4.4 Import Fields
A checklist of every optional data group the plugin can pull from IGDB: Cover Image, Artwork, Screenshots, Summary, Storyline, Alternative Title, Release Date (which also derives the Year), Video, Supported Languages, and Age Ratings.
All of them are checked by default. If you don’t need some of this data — for example, you don’t care about Age Ratings or you don’t want a trailer video — simply uncheck it. Unchecked fields are not just hidden: they are never even requested from the IGDB API, keeping each import request smaller and faster.
Use the Select all / Select none links above the checklist to toggle everything at once.
4.5 Taxonomies
A checklist of the six taxonomies the plugin can register: Genres, Game Modes, Platforms, Collections, Developers, and Keywords. Each one shows its internal slug (e.g. enjoy_genre) for reference.
Uncheck any taxonomy you don’t need — for example, if your target post type already has its own genre taxonomy from another plugin. Disabled taxonomies are not registered on your site at all, and their data is not requested from IGDB during import.
4.6 Customizing URL Slugs
This one lives on a different screen: go to Settings → Permalinks (the native WordPress page). Scroll down and you’ll find a new section titled “Enjoy Permalinks”, added there by the plugin, with fields for the Games post type and per taxonomy.
By default, each uses a plain, clean slug matching its name (e.g. /genre/, /platform/, /tag/). If you want different URLs — for example, translated slugs like /genero/ — type your preferred slug into the matching field and click Save Changes at the bottom of that page, exactly as you would for any other permalink setting.
Adding Your First Game
- Go to your target post type’s Add New screen (e.g. Games → Add New).
- In the Enjoy — IGDB Game Data box, type a game’s name into the Search on IGDB field.
- A dropdown appears with matching results (cover thumbnail, title, release year). Click the one you want.
- The post title, IGDB Game ID, Alternative Title, Summary, Storyline, and Release Date fields are filled in automatically.
- If you picked the wrong game or want to start over, click the ✖ button inside the search box — it clears the search and every field it just filled in.
- Click Publish (or Update). The full import now runs: cover image, artwork, screenshots, video, supported languages, age ratings, and all enabled taxonomies are fetched and attached to the post.
That’s it — the game’s page is now fully populated.
The Metabox, Field by Field
The Enjoy — IGDB Game Data box in the post editor contains:
- Search on IGDB — the live search box described in Section 5.
- IGDB Game ID — the numeric ID IGDB uses internally for this game. Filled automatically by the search; you can also type one in by hand if you already know it.
- Alternative Title, Website’s related fields removed in this version — additional identifying text pulled from IGDB.
- Release Date — a native date picker.
- Year — a read-only field, automatically calculated from Release Date. You never edit this directly; it updates itself whenever the Release Date changes (either from an import or from you editing it by hand).
- Video URL — the trailer link (YouTube), used to build an embedded, responsive player on the frontend.
- Summary and Storyline — the two long-form text fields IGDB provides.
- Artwork Image / Screenshot Image — two single-image fields with a Select Image button (the standard WordPress media picker).
- Screenshots Gallery — a full gallery manager: thumbnails of every screenshot IGDB pulled in, each with a small ✖ to remove it, and an Add Images button to bring in more from your Media Library by hand. This section does not appear at all if your target post type is WooCommerce Products, since Woo already has its own native “Product Gallery” box for the same purpose.
- Supported Languages and Age Ratings — read-only previews of the data imported from IGDB, shown here purely so you can verify it came through correctly. They’re not editable from this box.
- Re-sync from IGDB — see Section 7.
Re-syncing a Game From IGDB
If IGDB’s own data for a game changes after you’ve already imported it — a wrong artwork, an updated summary, a newly added trailer — you don’t need to re-enter anything by hand.
Open that game in the editor and, near the bottom of the Enjoy metabox, click Re-sync from IGDB. You’ll be asked to confirm, since this:
- Deletes the old artwork, cover image, and screenshots from your Media Library (to avoid ending up with duplicate files).
- Re-fetches everything fresh from IGDB using the same Game ID.
- Replaces (not appends) every taxonomy term, so old genres/platforms that no longer apply don’t linger.
A loading overlay appears while this runs, and the page reloads automatically once it’s done.
Note: if you manually added extra images to the Screenshots Gallery (Section 6) that didn’t come from IGDB, a resync will remove them too, since the gallery is treated as fully IGDB-managed during a resync.
Using Enjoy With WooCommerce
Set Products as your target post type in Settings (Section 4.2) and Enjoy adjusts automatically:
- The IGDB search box and every metabox field appear directly on the Product edit screen, exactly as they do for any other post type.
- Screenshots imported from IGDB are merged into WooCommerce’s own native Product Gallery (the one already built into the Product Data box), instead of the separate “Screenshots Gallery” field used elsewhere.
- If the Frontend Template setting is on, imported data shows up in its own “Game Info” product tab, next to the native Description and Reviews tabs — it does not touch the description itself.
- The Game Info tab intentionally does not include the Artwork image or a duplicate gallery, since WooCommerce already covers that visual role with its own main product image and native gallery.
If you want the Artwork image to appear somewhere specific on the product page, add it yourself using the [enjoy_artwork] shortcode (Section 10) or the Enjoy Image block (Section 11) — this plugin intentionally doesn’t modify any other part of your WooCommerce product template.
The Post List Screen
On your target post type’s list screen (e.g. Games → All Games), Enjoy adds a Thumbnail column right after the checkbox column, showing the featured image at a glance.
This column does not appear if your target is WooCommerce Products, since Woo already shows its own thumbnail column there.
Shortcodes Reference
Every shortcode accepts two common attributes:
- id — the post ID to pull data from. If omitted, it uses whichever post is currently being displayed (works automatically inside the loop, a single post template, or when placed inside that post’s own content).
- style — either styled (the default: ready-to-use Apple-minimal design with CSS classes) or raw (bare, unstyled HTML — no CSS classes at all, so your own theme or page builder styles apply naturally). Use raw if you want full control over the look.
10.1 [enjoy_field]
A generic, always-raw accessor for developers. Pulls any single text field by name.
[enjoy_field field=”summary” id=”123″]
Valid field values: alternative_title, summary, storyline, release_date, video, year. Optional format attribute (PHP date format) applies when field=”release_date”. Optional before / after attributes wrap the output in extra text.
10.2 [enjoy_alternative_title]
[enjoy_alternative_title style=”styled”]
10.3 [enjoy_summary]
[enjoy_summary style=”raw”]
10.4 [enjoy_storyline]
[enjoy_storyline]
10.5 [enjoy_release_date]
[enjoy_release_date format=”F j, Y”]
The format attribute accepts any PHP date format string (default: F j, Y, e.g. “April 26, 2024”).
10.6 [enjoy_video]
[enjoy_video]
In styled mode, renders a responsive 16:9 embedded video player (via WordPress’s native oEmbed system, cached for a week). In raw mode, renders a plain link to the video URL.
10.7 [enjoy_artwork] and [enjoy_screenshot]
[enjoy_artwork size=”large”]
[enjoy_screenshot size=”medium”]
The size attribute accepts any registered WordPress image size (thumbnail, medium, large, full).
10.8 [enjoy_gallery]
[enjoy_gallery size=”medium” lightbox=”yes”]
Renders every image in the Screenshots Gallery. In styled mode with lightbox=”yes” (the default), each image opens in a full-screen GLightbox viewer. Set lightbox=”no” to disable that and just show plain thumbnails.
10.9 [enjoy_taxonomy]
[enjoy_taxonomy taxonomy=”genre” separator=”, “]
Valid taxonomy values: genre, mode, platform, collection, developer, tag. In styled mode, renders a list of clickable pill badges, each linking to that term’s own archive page. In raw mode, renders plain comma-separated (or separator-separated) linked text.
10.10 [enjoy_game_card]
The all-in-one summary card: cover image, title, release date, platforms, genre badges, a trimmed summary, and a “View Game” button linking to the full page.
[enjoy_game_card size=”medium” show_summary=”yes” summary_length=”30″ show_button=”yes” button_text=”View Game”]
Useful for archive pages, “related games” sections, or anywhere you want a compact preview rather than the full page.
10.11 [enjoy_languages]
[enjoy_languages]
Renders the Supported Languages table (Language / Interface / Audio / Subtitles), matching the same shape IGDB itself displays, with green checkmark icons in styled mode.
10.12 [enjoy_age_ratings]
[enjoy_age_ratings]
Renders each age rating as an icon (pulled from wp-content/plugins/enjoy/assets/img/ratings/, see Section 13) or, if no matching icon file exists yet, a plain text badge such as “ESRB M”.
Gutenberg Blocks Reference
All five blocks live under the “Enjoy (IGDB)” category in the block inserter. Each has a Post ID field in its sidebar (leave it empty to use the current post) and every block’s output is generated by the same underlying code as the matching shortcode, so the look is always consistent whichever one you use.
11.1 Game Card
Same as [enjoy_game_card]. Sidebar controls: Style (styled/raw), Cover size, Show summary toggle, Summary length slider, Show “View Game” button toggle, Button text.
11.2 Field
A dropdown to pick one field (Alternative Title, Website, Summary, Storyline, Release Date, Video URL) plus Style, and a Date format field that appears only when Release Date is selected.
11.3 Taxonomy List
A dropdown to pick one taxonomy (Genre, Game Mode, Platform, Collection, Developer, Keywords), plus Style and (in raw mode) a Separator field.
11.4 Image
A dropdown to choose the source (Artwork or Screenshot), plus Size and Style.
11.5 Gallery
Size and Style controls, plus an Enable Lightbox toggle (only shown in styled mode).
Every block uses WordPress’s Server-Side Render to preview live inside the editor, exactly as it will appear on the frontend.
Using Enjoy With Elementor (and Other Page Builders)
There are two separate ways to pull Enjoy’s data into Elementor. Both work without any dedicated “Enjoy for Elementor” integration, because every shortcode is a standard WordPress shortcode, and every field is stored as plain, standard WordPress post meta.
12.1 Method A — Elementor’s Dynamic Tags (“the little icon”)
This is the small icon that appears next to a field’s input in Elementor Pro — it looks like a stack of database records (often described as looking like a small stack of plates or discs).
Clicking it lets you bind that field to live data instead of typing static text, and it already works with Enjoy’s data with zero setup, because Elementor Pro’s built-in Custom Field and Post Terms tags can read any post’s meta and taxonomies directly.
For text fields (Heading, Text Editor, any text control):
- Click the dynamic-tag icon next to the field.
- Under the Post group, choose Custom Field.
- A “Key” field appears — type the exact meta key name from the table below (for example enjoy_summary).
- Elementor immediately shows that field’s live value in the preview.
Available Custom Field keys:
| Field | Meta key | Notes |
| IGDB Game ID | enjoy_game_id | Rarely needed on the frontend |
| Alternative Title | enjoy_alternative_title | Plain text |
| Summary | enjoy_summary | Plain text — see note below about paragraph breaks |
| Storyline | enjoy_storyline | Plain text — see note below about paragraph breaks |
| Release Date | enjoy_release_date | Stored as YYYY-MM-DD; use Elementor’s Custom Field “Date” format option to display it nicely |
| Year | enjoy_year | Plain 4-digit number |
| Video URL | enjoy_video | A raw YouTube link — see 12.3 for how to actually embed it |
| Artwork Image | enjoy_artwork_image | Attachment ID — use in an Image widget, not a text one (see below) |
| Screenshot Image (first) | enjoy_screenshot_image | Attachment ID — same as above |
Note on Summary/Storyline: Elementor’s Custom Field tag outputs the raw meta value as-is. If the text has multiple paragraphs, they may render as one unbroken block depending on the widget you use — a Text Editor widget generally preserves line breaks, but check the result. For guaranteed, properly formatted paragraphs, use the [enjoy_summary] / [enjoy_storyline] shortcode instead (Method B below), which already wraps each paragraph in its own <p> tag.
For the Image widget: click its dynamic-tag icon, choose Custom Field under the Post group, and enter enjoy_artwork_image or enjoy_screenshot_image. Elementor automatically recognizes that the stored value is a Media Library attachment ID and renders the actual image, exactly like it does for ACF image fields.
For the Cover image (featured image): don’t use Custom Field for this one — it’s a regular WordPress featured image, not custom meta. Use Elementor’s own built-in Featured Image dynamic tag instead (also under the Post group).
For taxonomies (Genres, Platforms, Game Modes, Collections, Developers, Keywords): Custom Field doesn’t apply here, since these are taxonomy terms, not post meta. Use Elementor’s Post Terms dynamic tag instead (also under the Post group) — it shows a Taxonomy dropdown where enjoy_genre, enjoy_platform, enjoy_mode, enjoy_collection, enjoy_developer and enjoy_tag will already be listed automatically, since they’re registered as normal public taxonomies.
Fields that don’t work well as a plain Custom Field: enjoy_gallery_images (a comma-separated list of attachment IDs — not something the Custom Field tag parses into a gallery) and enjoy_languages / enjoy_age_ratings (stored as structured JSON, meant to be rendered as a table/icons, not raw text). For all three of these, use Method B below instead.
12.2 Method B — the Shortcode widget
For anything that needs real formatting — the gallery with lightbox, the Supported Languages table, Age Rating icons, linked taxonomy pills, or the all-in-one Game Card — use Elementor’s Shortcode widget (under the Basic or General category) and paste in any shortcode from Section 10, for example:
[enjoy_gallery lightbox=”yes”]
[enjoy_languages]
[enjoy_age_ratings]
[enjoy_taxonomy taxonomy=”genre”]
[enjoy_game_card]
Omit the id attribute and Enjoy automatically detects which post is currently being displayed — the same way Elementor’s own Dynamic Tags do. This also works identically in Beaver Builder, Bricks, Divi, or any other builder that supports WordPress shortcodes.
12.3 Embedding the trailer video properly
enjoy_video (Method A) only gives you the raw YouTube link as text. To get an actual responsive, embedded player like the one the automatic Frontend Template uses, either:
- Use the [enjoy_video] shortcode (Method B) in a Shortcode widget, or
- Use Elementor’s own Video widget, click its “Source” field’s dynamic-tag icon, choose Custom Field, and enter enjoy_video — Elementor’s Video widget accepts a YouTube URL from a dynamic source and builds its own player around it.
12.4 Using this inside a Theme Builder single template
If you’re building a custom “Single Game” template with Elementor Pro’s Theme Builder, place these dynamic tags and Shortcode widgets exactly where you’d normally put static content, and Elementor will correctly re-resolve them for whichever game post is actually being viewed.
Important — turn off the Frontend Template setting first. When Frontend Template (Section 4.3) is turned on, Enjoy takes over the entire single-page template for its target post type to build its own automatic layout — which means an Elementor Theme Builder “Single” template for that same post type is never actually used for real visitors while that setting is on; Enjoy’s own template always wins. Building (or previewing) a Theme Builder template while Frontend Template is still enabled can also make Elementor’s own editor UI behave inconsistently — for example, the “Post Custom Field” dynamic tag’s Key dropdown may fail to populate even after setting Preview Settings to a real post with data. Turn Frontend Template off before building or previewing your own Elementor Single template, and everything (including that dropdown) works as expected.
In short: use either the automatic Frontend Template or your own Elementor Theme Builder template for a given post type — not both at once.
Frequently Asked Questions
No. Everything from search to full page display can be done through the WordPress admin and the Settings page. Shortcodes and Gutenberg blocks are there for extra flexibility if you want it, not a requirement.
Yes. Enjoy only affects the post type you choose in Settings — every other post type on your site is completely untouched.
Previously imported data stays on those posts (nothing is deleted), but the Enjoy search/metabox will now appear on the new target post type instead. If you want data on the old post type, keep both post types and don’t switch back and forth without a plan.
No. The Frontend Template (Section 4.3) only ever appends generated content — it never edits or replaces anything already in the post’s own content in the editor.
The Frontend Template setting is site-wide, not per-post. If you need a mix, turn it off and use shortcodes/blocks everywhere, which gives you full per-post control.
Troubleshooting
Double-check your API Key and Auth Key in Settings. An invalid or expired Auth Key is the most common cause.
Not every game has every kind of data on IGDB — some entries are more complete than others. This is normal and not a plugin error. Try Re-sync (Section 7) after a few days if you believe IGDB’s own data has since been filled in by their community.
This is expected if your target post type is WooCommerce Products — screenshots live in WooCommerce’s own native Product Gallery box instead (Section 8).
This should not happen when the Frontend Template setting is on — Enjoy replaces the whole single-page template specifically to prevent that duplication. If you still see it, confirm the Frontend Template toggle is checked and that you’re viewing the actual single page of an imported item (not an archive or search results page).
Go to Settings → Permalinks and save the page once (Section 4.6) — this refreshes the URL rules using the clean slugs.





