WP Manifestindependent plugin directory
manifest / events / veezi-wordpress-plugin

Veezi for WordPress releases

A wordpress plugin that exposes Veezi session information to wordpress

by Daylesford Community Theatre · github.com/daylesfordcinema/veezi-wordpress-plugin · website

0stars
4release downloads
0forks

Install

The author publishes release zips, so WP-CLI can install straight from GitHub:

wp plugin install https://github.com/daylesfordcinema/veezi-wordpress-plugin/releases/download/v0.4.0/veezi-wordpress-plugin-0.4.0.zip

Readme

Veezi for WordPress

Veezi for WordPress is a WordPress plugin that publishes a cinema's Veezi programme as WordPress content: one post per film, one per screening, posters copied into the media library and booking links attached.

It is read-only. Ticket sales, seat selection and payment all stay in Veezi.

Requirements

  • WordPress 6.5 or later
  • PHP 8.2 or later
  • A Veezi account, and the access token it issues
  • Elementor, to build the listings. The free version covers the fields and the plugin's own widget; the loop grid and the theme builder are Elementor Pro features, and they are marked as such below.

Overview

The problem

A cinema's programme lives in its ticketing system and its website lives somewhere else, so keeping the two in step means retyping session times every week — and again whenever a session moves, sells out or is added. It drifts the first time somebody is busy on a Tuesday.

How it works

The plugin reads the programme from the Veezi API on a schedule and writes it into WordPress as ordinary content. Films become posts of a Films post type, screenings become posts of a Sessions post type, and the artwork goes into the media library.

Because the result is native WordPress content, there is no special listing mode and no shortcode to learn. You build the pages in Elementor the way you build anything else — drag out a widget, bind a field, style it. What the plugin adds is the fields to bind, one widget for the thing a page builder cannot express, and four starter templates.

The cinema goes on managing its programme in Veezi. The website follows.

Quick start

1. Install and activate

Upload the release .zip under Plugins → Add New → Upload Plugin, or copy the folder into wp-content/plugins/. Activate it.

2. Get your access token

In Veezi Back Office, go to Settings → Web and copy the access token. Veezi issues one per cinema. It is read-only as far as this plugin is concerned, but treat it as a credential — see Privacy and your access token.

3. Connect

In WordPress, go to Settings → Veezi, paste the token in, and press Save settings.

The page comes back and tells you which cinema you are connected to. If it names your cinema, the connection works. If it doesn't, see Troubleshooting.

4. Sync the programme

The programme syncs by itself every hour, so you can simply wait. To see it now, press Sync now on the same screen. You should get something like:

Synced 9 films and 16 sessions from Phoenix Cinema.

5. Check what arrived

There are new Films and Sessions menus in the WordPress sidebar. Open Films: if your films are listed there with their posters, the setup is done and everything after this is page building.

Next steps

What appears in WordPress

Films One per film you have something scheduled for. Carries the synopsis, runtime, classification, genre, distributor, release date, cast and crew, trailer link and poster. Each gets its own page at /film/its-name/.
Sessions One per screening: when it starts and ends, its booking link, and whether it's sold out or nearly. These exist to be listed, not visited.
Genres and Classifications Taxonomies on films, so visitors can browse by them.
Listings A behind-the-scenes taxonomy with two terms, Now Showing and Coming Soon, that the sync keeps up to date. This is how you filter a listing without writing a query.

Everything here is kept in step with Veezi automatically. Don't edit these records by hand — the next sync will write over your changes. If you need something to read differently on the website, change it in Veezi.

One thing worth knowing: your listings are built from what's scheduled, never from your Veezi film catalogue. Every film in a Veezi account reports itself as active, test records included, so a listing built from the catalogue would advertise films that will never screen.

Building your listings

Start from a template

Four starter templates ship with the plugin, all downloadable from the bottom of Settings → Veezi. Download one, then import it under Templates → Saved Templates → Import Templates. Everything in them is already bound to the right field — restyle them rather than starting from an empty canvas.

Template Use it as
Film card The loop item of a Now Showing grid. Poster, title, details, session times, Book now.
Coming soon card The loop item of a Coming Soon grid. Same, without the times or the button — see Coming Soon.
Session row The loop item of a chronological "what's on" grid over Sessions.
Film page A theme-builder Single template for Films.

The fields you can bind

Eleven entries appear in Elementor's dynamic-data picker, grouped under Veezi Programme. Bind them to ordinary widgets the way you'd bind any custom field.

Field On a film On a screening
Poster the artwork from your media library the artwork of the film screening
Runtime (minutes) a bare number — add "min" using the tag's own After box the same, for the film screening
Classification the rating the rating of the film screening
Genre every genre it's filed under the same, for the film screening
Cast and Crew everyone credited, or one role at a time the same, for the film screening
Trailer Link the trailer, in a form a video widget understands the trailer of the film screening
Film Title its own title the title of the film screening
Session Time when it next screens that screening's time
Availability "Sold out" or "Few tickets left" for the screening below, or "On sale soon" for a film that's coming soon "Sold out" or "Few tickets left" for this one
Booking Link the soonest screening still on sale that screening, unless it can't be booked
Nothing Scheduled a sentence for when the cinema has nothing on at all the same

They read whichever record is being rendered, so there's nothing to point at and nothing to configure — the same card works inside a loop and on a film's own page, and duplicating a template behaves exactly like the one you copied.

Every field answers on both, so a row of a chronological listing can carry the poster, rating and genre of the film it screens rather than only a time and a link. Where a field has to pick — a film screens several times, and only one of those can be the headline — the time, the availability and the button all answer from the same screening, so a card can never headline Saturday and sell Sunday.

Three of them have controls worth knowing about:

  • Session Time → Format. The same date codes as Settings → General (l j F for "Saturday 2 August", g:i a for "4:30 pm"). Leave it empty for your site's own format. This is what lets one field give a listing both its day heading and its row time.
  • Cast and Crew → Role. Left alone it's the whole credit list with each person's role beside their name. Set to Director, Screenwriter, Producer or Actor, it's just those names, in Veezi's billing order. The heading above them is yours.
  • Availability → the three wordings. Change "Sold out" to "Full house" if that's your house style. It renders nothing at all most of the time, which is deliberate: a listing where every row has a badge has no badge. Bind it to something you're happy to see render empty.

Anything Veezi doesn't have resolves to nothing rather than an error, so a card built for a film with a trailer keeps working for the one without.

The Session Times widget

A card showing every time a film screens this week is a list inside a list — loop widgets can't nest, and a single field can only offer one value. So the plugin ships one widget of its own, and only one.

Drop Session Times into a card and it lists that film's remaining screenings, each one linking to the seats for that particular screening. Controls cover the time format, whether to name the day and how, how many to show, and the wording of the three badges.

A screening nobody can book stays in the list, marked, with no link — sold out, already started, or announced but not selling yet. Someone scanning the week needs to see that Saturday is gone, and a button landing on "no seats available" is a wasted trip.

Always sort by "Menu Order"

In every loop grid you build, set the query order to Menu Order, ascending.

The plugin numbers your films by when they next screen and your screenings chronologically, and writes those numbers into WordPress's menu order field — the one sortable field a page builder offers that can be made to mean something here.

Leave the sort on its default and you get publication date, which for synced content is whenever the sync happened to create the record. That's a meaningless order, and nothing anywhere reports a problem. It's the single easiest thing to get wrong.

When there's nothing on

A cinema between seasons has nothing on and is working perfectly. A cinema whose token has stopped working also has nothing on. On the page those look identical — an empty grid — so put a heading below your listing and bind it to Nothing Scheduled.

It stays empty while there's a programme and reads a sentence of your choosing when there isn't. While you're in the editor it does more: if nothing has ever synced it names the settings screen instead, because that's a fault and you're the person who can fix it. Visitors never see that version.

The four listings

Now Showing

A loop grid over Films, sorted by Menu Order, filtered to the Now Showing term of the Listings taxonomy, with the film card as its loop item. That's the whole configuration. (Loop grid is Elementor Pro.)

What's on — a listing by day

For the visitor who has a free Thursday rather than a film in mind. A loop grid over Sessions instead of Films, sorted by Menu Order, with the session row as its loop item. No filtering needed, and no widget of the plugin's at all — every part of a row is an ordinary widget bound to a field.

Two things to expect:

  • The day heading repeats on every row of that day. A field answers for the row it's rendering and can't see the one above it, so grouping is a per-row heading plus your stylesheet. Hiding the repeats is a few lines of CSS.
  • A row you can't book has no link on it — but it's styled exactly like one you can, because the template gives the list one look. If you want them to look different, that's a style to add.

Set Items Per Page high enough to show the whole programme; it defaults to six.

Coming Soon

Films you have scheduled but not yet put on sale. Built the same way as Now Showing, with the Coming Soon term and the coming soon card as its loop item — but it publishes nothing until you switch it on, and there is more to know before you do. It has a section of its own below.

Film pages

Every film already has one, at /film/its-name/. The address is fixed the first time the film is published and never recalculated, so a distributor renaming a film upstream doesn't break links you've already shared. The page keeps working after the last screening has passed, which is the point: a link someone shared in August should still open in December.

Import the film page template into a theme-builder Single template for Films. (The theme builder is Elementor Pro. Without it, WordPress falls back to your theme's own single-post template, which shows the title and synopsis and nothing else the plugin knows about.)

It ships with no Book now button, deliberately. Every film page eventually becomes an archived film page, and a booking link with nothing to book renders as a button that goes nowhere. The session times are the booking surface — each time in the list links to the seats for that screening.

The trailer uses Elementor's own video widget. Veezi sends YouTube watch links, which no player can be pointed at directly; the video widget takes that form and works out the embed itself, along with every privacy and playback setting it offers. More than half a typical catalogue has no trailer, and for those the widget renders nothing rather than an empty player.

Read the full README on GitHub →

Releases

TagPublishedAssetDownloads
v0.4.0 Aug 17, 2026 veezi-wordpress-plugin-0.4.0.zip 1
v0.3.0 Aug 15, 2026 veezi-wordpress-plugin-0.3.0.zip 1
v0.2.0 Aug 15, 2026 veezi-wordpress-plugin-0.2.0.zip 1
v0.1.0 Jul 30, 2026 veezi-wordpress-plugin-0.1.0.zip 1