Cache path
A ten-minute browser cache avoids repeat requests. Current source also ships with an optional shared WordPress cache enabled at a 120-minute default. Visitors may read the shared copy; only capable logged-in users can refresh it.
$ cat ~/projects/purrfect-match.md
A free, GPL-licensed plugin that gives a rescue’s public Petfinder listings a useful home on its own website. The rescue controls the copy, color, filters, cards, and next steps. No Petfinder API key or server-side secret is required.
$ git show 34138c5
This reviewed 1.7.1 update is deliberately small. It makes the public widget hold together inside real WordPress themes and at the awkward widths between a phone and a full page.
The widget now protects its type, tracking, and adoption-button label colors from overreaching WordPress theme rules.
Filters stay balanced at medium widths, including two equal columns when Breed is hidden, then return to one column on phones.
The organization link disappears when it would only send someone back to the same site homepage.
$ ./purrfect-match --org FL1629 --current
This React island recreates the visitor-facing flow against CJ Paws’ public Petfinder data so it can be tried here. The plugin itself runs in WordPress; the source-controlled preview above shows that runtime. Filter the set, shuffle the order, read a story when one is available, or continue to the source profile. If live data is unavailable, the rescue’s adoption page remains the useful fallback.
Choose one or more filters to narrow the current listing.
Finding current adoptable cats.
$ inspect --experience
Current main uses a dedicated filter deck, 4:3
photo crops that shift to 3:2 on narrow containers, aligned actions, and a container-aware
card grid. It reveals more listings in clear batches instead of turning the page into a
long wall of cards.
Breed, size, and age filters work against the loaded set. Active choices stay visible as removable chips, and Shuffle offers another way through the same listings.
When Petfinder supplies a description, an optional story panel opens over the card. Focus moves to Close, Escape dismisses it, and focus returns to the original control.
Cards can link to the full Petfinder profile and, when a rescue configures a form, pass the pet name and ID into an Apply to adopt link.
$ configure --instance
A rescue can set its defaults once in WordPress, then use a short shortcode on the page. Per-instance attributes can change the source, copy, listing type, status, reveal count, columns, and accent when a page needs something different.
[purrfect_match organization="FL1629" type="cat"
status="adoptable" per_page="24" columns="3" brand="#e93396"] The repository is a standard WordPress plugin written in PHP, JavaScript, and CSS. It has no front-end build step.
The plugin uses Petfinder’s public widget data source. It does not add accounts, analytics, form data, or a Petfinder API key. Petfinder and its photo CDN still receive ordinary browser connection metadata when they serve data or images. Purrfect Match is not affiliated with or endorsed by Petfinder.
A ten-minute browser cache avoids repeat requests. Current source also ships with an optional shared WordPress cache enabled at a 120-minute default. Visitors may read the shared copy; only capable logged-in users can refresh it.
Optional JSON-LD identifies the rescue as an AnimalShelter and the visible
pets as an ItemList. Semantic card headings, labelled controls, concise
live-region updates, visible focus, keyboard story controls, and reduced-motion
support are part of current source.
Purrfect Match is free, open-source, and separate from DepoStack. It is built for CJ Paws, with generic defaults so another rescue can adapt the same public-listing interface to its own identity and process.