WP Manifestindependent plugin directory
manifest / media / artopia-gallery

Artopia Gallery

WordPress plugin to create client art gallery from LightRoom catalog

by aCharlieKelly · github.com/acharliekelly/artopia-gallery · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/acharliekelly/artopia-gallery/archive/refs/heads/main.zip

Custom WordPress plugin for managing artist portfolios, importing artwork catalogs, and powering gallery websites for Artopia Giclée clients.

Overview

Artopia Gallery is a purpose-built WordPress plugin designed to streamline the process of turning artist inventory data into polished web galleries.

Many artists maintain artwork records in spreadsheets or Lightroom exports but have little interest in building or maintaining websites. This plugin bridges that gap by allowing administrators to bulk import artwork data, organize artists and galleries, and manage collections inside WordPress.

Current Features

Custom Content Model

  • Artists custom post type
  • Artworks custom post type
  • Gallery taxonomy for organizing artist-scoped collections

Artwork Metadata

Each artwork supports:

  • Artist relationship
  • Filename
  • Medium
  • Year
  • Dimensions
  • Price
  • Status

Importer

Admin import workflow includes:

  • Choose import format
  • Select Artist
  • Enter Gallery Name
  • Choose whether imported artworks are created as published posts or drafts
  • Upload import file
  • Load Lightroom catalogs to discover collections before validation/import
  • Validate before import
  • Temporary staged-upload reuse so validation and import can use the same file without re-uploading
  • Shared validation/import pipeline across supported source formats
  • Header normalization / alias handling for CSV
  • Required field enforcement
  • Duplicate prevention for repeated imports using a normalized import identity, with legacy fallback checks for older imported records
  • Artist-scoped gallery lookup and creation
  • Legacy unowned gallery adoption when a matching gallery is reused during import
  • Bulk creation of Artwork posts
  • Import summary reporting

Gallery terms are treated as artist-owned collections by the plugin. Two artists may use the same gallery name without sharing the same logical gallery record.

Currently supported formats:

  • CSV
  • Lightroom Catalog (.lrcat) through direct SQLite-backed catalog reading

Lightroom import notes:

  • PHP SQLite support is required (SQLite3 or pdo_sqlite)
  • One catalog import targets one selected Lightroom collection
  • If a collection named Finals exists, it is preferred automatically
  • Lightroom keywords are currently ignored

Shortcode behavior

The preferred shortcode pattern for gallery-specific output is:

[artopia-gallery gallery="landscapes" artist_id="123"]

When both gallery and artist_id are provided, the plugin resolves the gallery in artist context. Using gallery alone remains supported for backward compatibility, but can be ambiguous if multiple artists reuse the same gallery name.

Public templates

The plugin now manages its own public templates for:

  • artist archive pages
  • single artist pages
  • gallery taxonomy pages
  • single artwork pages

Template routing is handled inside the plugin, and gallery taxonomy pages reuse the same shared gallery rendering path used by the shortcode. The shortcode remains available and is still the preferred portable way to embed gallery output inside other content.

Artist pages use canonical singular permalinks such as /artists/charlie-kelly/. Single artist pages now show the artist details plus all galleries explicitly owned by that artist, with links to each gallery page.

Admin Tools

  • Dashboard summary for artists, artworks, gallery ownership health, and draft content
  • Multi-format import workflow with validate/import steps and publish/draft mode
  • Gallery ownership review, manual owner assignment, and safe backfill for unowned legacy galleries

Supported CSV Columns

Required

  • filename
  • title

Optional

  • medium
  • year
  • dimensions
  • price
  • status
  • description

Supported Aliases

Examples:

  • dimensiondimensions
  • sizedimensions
  • nametitle
  • imagefilename

Example CSV

filename,title,medium,year,dimensions,price,status
marsh-sunset.jpg,Marsh Sunset,Oil on Canvas,2024,24x36,1800,available
cat-study.jpg,Cat Study,Pastel,2025,12x16,450,sold

Development

Install dev dependencies from the plugin directory:

cd wp-content/plugins/artopia-gallery
composer install

Run unit tests:

composer test

Testing

Unit tests live in tests/Unit.

Manual importer regression fixtures live in fixtures/:

  • import_min.csv: minimal valid import
  • import_default.csv: standard happy-path import with real image filenames
  • import_bad.csv: invalid rows and warning scenarios
  • import_abnormal.csv: normalization and alias-header edge cases
  • import_duplicates.csv: repeat-import duplicate checks
  • import_same_filename_diff_title.csv: same filename, different title duplicate behavior
  • fake_lightroom_export/: synthetic Lightroom .lrcat fixture plus manifest for Phase 6 importer development

CI runs PHPUnit and PHP syntax linting through GitHub Actions in .github/workflows/phpunit.yml.

Uninstall Policy

Artopia Gallery currently uses a non-destructive uninstall policy.

Uninstalling the plugin leaves existing artists, artworks, gallery terms, attachments, and related post/term meta in place. The plugin treats these records as site content and does not remove them automatically.