Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/jpkcom/jpkcom-acf-references/releases/download/v1.2.4/jpkcom-acf-references.zipPlugin Name: JPKCom ACF References
Plugin URI: https://github.com/JPKCom/jpkcom-acf-references
Description: Reference gallery with filter function plugin for ACF
Version: 1.2.1
Author: Jean Pierre Kolb jpk@jpkc.com
Author URI: https://www.jpkc.com/
Contributors: JPKCom
Tags: ACF, Fields, CPT, CTT, Taxonomy, Images
Requires Plugins: advanced-custom-fields-pro, acf-quickedit-fields
Requires at least: 7.0
Tested up to: 7.1
Requires PHP: 8.3
Network: true
Stable tag: 1.2.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: jpkcom-acf-references
Domain Path: /languages
A plugin to provide a reference gallery with filter function tool for ACF Pro.
Description
JPKCom ACF References is a reference gallery system with filter functions built on Advanced Custom Fields Pro. This plugin provides a complete solution for creating, managing, and displaying reference projects on your WordPress website with powerful features for portfolios, case studies, and project showcases.
Key Features
- Three Custom Post Types: References, Locations, and Customers with hierarchical organization
- Image Galleries: Full support for image galleries with lightbox modal and thumbnail grid display
- Interactive Filtering: JavaScript-based client-side filtering with animated transitions respecting
prefers-reduced-motion - Multiple Layouts: Choose between list, card grid, or image overlay layouts for references
- Admin Tools: Built-in shortcode generator and settings page for archive redirect configuration
- Advanced Querying: Filter references by type, location, customer, and custom filter taxonomies
- Multilingual Ready: Full WPML support with translation-aware field configuration (German translations included)
- Template Override System: Customize any template via child theme, parent theme, or mu-plugins
- Developer-Friendly: Helper functions, filters, and shortcodes for easy customization
- Bootstrap 5 Ready: Pre-styled templates with modern responsive markup
- Automatic Updates: Secure GitHub-based plugin updates with SHA256 checksum verification
- Accessibility First: ARIA labels, keyboard navigation, and screen reader support throughout
Requirements
The following plugins are required for this plugin to work:
- Advanced Custom Fields Pro (v6.0+)
- ACF Quick Edit Fields (for inline editing)
Optional:
- WPML for multilingual reference projects
What's Included
- Custom Fields (
includes/acf-field_groups.php) - Programmatically registered ACF field groups for references, locations, and customers - Custom Post Types (
includes/acf-post_types.php) - Reference, Location, and Customer post types with proper admin organization - Custom Taxonomies (
includes/acf-taxonomies.php) - Three taxonomies: reference-type, reference-filter-1, reference-filter-2 - Template System (
templates/,debug-templates/) - Complete set of single and archive templates with override support - Shortcode Templates (
templates/shortcodes/) - List, types, and filter display templates with layout partials (list-items.php, list-cards.php, list-images.php) - Shortcodes (
includes/shortcodes.php) - Display filtered reference lists with interactive filtering, taxonomy displays - Helper Functions (
includes/helpers.php) - Utility functions for rendering fields and formatting dates - Admin Pages (
includes/admin-pages.php) - Shortcode generator and settings page for archive redirect - JavaScript Filtering (
assets/js/reference-list-filter.js) - Client-side filtering with animated transitions (vanilla JS, no jQuery) - Image Gallery Modal (
assets/js/gallery-modal.js) - Lightbox with keyboard navigation and accessibility support - CSS Animations (
assets/css/reference-styles.css) - Smooth fade-in/fade-out effects withprefers-reduced-motionsupport - Translation Files (
languages/) - German translations included (de_DE, de_DE_formal) with .l10n.php format - Automatic Updates (
includes/class-plugin-updater.php) - GitHub-based update system with SHA256 checksum verification
Documentation
API Documentation: Complete PHPDoc-generated API documentation is available at: https://jpkcom.github.io/jpkcom-acf-references/docs/
The documentation includes detailed information about all functions, classes, hooks, and filters available in the plugin.
Get Template Parts
// Native WordPress:
get_template_part( 'jpkcom-acf-references/partials/reference/customer' );
// Plugin:
jpkcom_acf_references_get_template_part( 'partials/reference/customer' );
Shortcodes
All shortcode attributes are optional.
Reference list with interactive filter functions:
[jpkcom_acf_references_list type="1,5" customer="6,8" location="1,3,7,11" limit="10" sort="DSC" style="background:transparent;" class="mb-5" title="References Headline"]
Advanced filtering with interactive dropdowns:
[jpkcom_acf_references_list show_filters="true" show_filter="0,1,2" reset_button="true" filter_title_0="Project Type" filter_title_1="Category" filter_title_2="Technology" layout="cards" limit="20"]
Attributes:
type,filter_1,filter_2- CSV of taxonomy term IDs for filteringcustomer,location- CSV of post IDs for filteringlimit- Number of posts to display (default: all)sort- "ASC" or "DSC" (default: "DSC")show_filters- Enable interactive filter dropdowns (true/false)show_filter- CSV of filter indexes to display: 0=type, 1=filter_1, 2=filter_2 (e.g., "0,1")reset_button- Show "Reset all filters" button (true/false)filter_title_0,filter_title_1,filter_title_2- Custom labels for filter dropdownslayout- Display layout: "list" (default), "cards", or "images" (overlay cards)style,class,title- Styling and heading options
List of reference types displayed as <details> tags:
[jpkcom_acf_references_types id="3,7,21" style="background:transparent;" class="mb-5" title="Types Headline"]
Custom filter taxonomies:
[jpkcom_acf_references_filter_1 id="1,5" class="mb-3" title="Filter 1 Headline"]
[jpkcom_acf_references_filter_2 id="2,8" class="mb-3" title="Filter 2 Headline"]
Helper functions
Renders all ACF fields of a post with Bootstrap 5 markup.
@param string $post_type Optional post type for field group query. If empty, 'current_post_type' is used.
jpkcom_render_acf_fields();
FAQ
Why do I need Advanced Custom Fields Pro?
This plugin relies on ACF Pro's powerful field group system to provide flexible reference data management. ACF Pro offers advanced field types (repeaters, flexible content, groups, galleries) that are essential for complex reference projects with image galleries, multiple locations, and rich content layouts.
How do I create my first reference?
- After activation, go to References → Add New in your WordPress admin
- Enter the reference title and description
- Fill in the ACF fields: reference type, location, customer, gallery, etc.
- Add reference types using the taxonomy on the right
- Upload images to the gallery
- Publish the reference
The reference will automatically appear in your reference archive.
How do I display references on my website?
Option 1: Use the shortcode (Simple)
[jpkcom_acf_references_list limit="10" sort="DSC"]
Option 2: Use the shortcode with interactive filters
[jpkcom_acf_references_list show_filters="true" show_filter="0,1" reset_button="true" layout="cards"]
This displays a filterable list with dropdown controls that filter references instantly without page reload.
Option 3: Navigate to the archive
Visit /references/ on your site to see all published references.
Option 4: Create a custom template
Use WP_Query with post_type => 'reference' to build custom reference displays.
Is this plugin compatible with WPML?
Yes! The plugin includes full WPML support via wpml-config.xml. References, locations, customers, and taxonomies can all be translated. Fields are configured with appropriate translation strategies (translate, copy, or copy-once) for optimal multilingual workflow.
How do I customize the reference templates?
You have three options:
Option 1: Child Theme Override (Recommended)
Copy templates from plugins/jpkcom-acf-references/templates/ to your-child-theme/jpkcom-acf-references/ and customize them.
Option 2: Parent Theme Override
Copy templates to your-theme/jpkcom-acf-references/ (works if no child theme is active).
Option 3: MU-Plugin Override
Copy templates to mu-plugins/jpkcom-acf-references-overrides/templates/ for site-wide customization.
How to overwrite functional libraries?
/**
* Add new path for overwrites of functional libraries
*/
add_filter( 'jpkcom_acfreferences_file_paths', function( $paths, $filename ) {
array_unshift( $paths, WP_CONTENT_DIR . '/custom-overrides/' . $filename );
return $paths;
}, 10, 2 );
How to overwrite template paths programmatically?
/**
* Add a new path, for example from the child theme or custom directory
*/
add_filter( 'jpkcom_acf_references_template_paths', function( $paths, $template_name ) {
array_unshift( $paths, WP_CONTENT_DIR . '/custom-templates/jpkcom-acf-references/' . $template_name );
return $paths;
}, 10, 2 );
/**
* Last chance to dynamically overwrite template path
*/
add_filter( 'jpkcom_acf_references_final_template', function( $template ) {
if ( is_singular( 'reference' ) ) {
return WP_CONTENT_DIR . '/special/single-reference-custom.php';
}
return $template;
});
How do plugin updates work?
The plugin uses a secure GitHub-based update system. When a new version is released:
- WordPress checks
https://jpkcom.github.io/jpkcom-acf-references/plugin_jpkcom-acf-references.jsonfor updates - Update notifications appear in your WordPress admin (Plugins page and Updates page)
- When you click "Update Now", WordPress downloads the plugin ZIP from GitHub
- The download is verified using SHA256 checksum for security
- If the checksum matches, the update proceeds automatically
You can also download releases manually from the GitHub repository.
Can I filter references by location or customer?
Yes! Use the shortcode attributes:
[jpkcom_acf_references_list location="1,3,7" customer="6,8" type="1,5"]
Location and customer values are post IDs. You can find them in the admin when editing locations or customers (look at the URL: post=123).
What are reference types and custom filters?
The plugin provides three taxonomy systems for organizing references:
Reference Type (reference-type) - Main categorization:
- Project categories: "Web Development", "Design", "Consulting"
- Industries: "Healthcare", "Finance", "Education"
- Technologies: "WordPress", "React", "PHP"
Filter 1 & Filter 2 (reference-filter-1, reference-filter-2) - Custom dimensions:
- Configure these for your specific needs (e.g., "Project Size", "Technology Stack", "Service Type")
- Both support hierarchical organization
- Can be displayed and filtered independently
Display them with shortcodes:
[jpkcom_acf_references_types]
[jpkcom_acf_references_filter_1]
[jpkcom_acf_references_filter_2]
How does the interactive filtering work?
The interactive filter system provides instant client-side filtering without page reloads:
Features:
- Dropdown controls for each taxonomy (type, filter 1, filter 2)
- Multiple selections per filter (checkboxes in dropdown)
- "OR" logic within a filter (show if ANY selected term matches)
- "AND" logic between filters (show only if ALL filters match)
- "Reset all filters" button to clear selections
- "No results" message when no references match
- Works with both list and card layouts
Example usage:
[jpkcom_acf_references_list show_filters="true" show_filter="0,1,2" reset_button="true" filter_title_0="Type" filter_title_1="Category" filter_title_2="Tech" layout="cards"]
How it works technically:
- All references load on initial page load
- Each reference has
data-*attributes with taxonomy term IDs - JavaScript shows/hides items based on selected filters
- No AJAX calls needed - instant filtering
- Accessible with ARIA labels and keyboard navigation
What's the difference between the three layouts?
The layout attribute controls how references are displayed:
List Layout (layout="list", default):
- Compact view with title, excerpt, and metadata
- Uses
templates/shortcodes/partials/list-items.php - Good for text-heavy reference lists
- Smaller thumbnails or no images
- Best for dense content with lots of references
Cards Layout (layout="cards"):
- Grid-based card display with larger images (16:9 format)
- Uses
templates/shortcodes/partials/list-cards.php - Better for visual portfolios
- Shows featured image, title, type, customer, and location
- Responsive grid (adjusts to screen size)
- Hover zoom effect on images (respects
prefers-reduced-motion)
Images Layout (layout="images"):
- Full-bleed image overlay cards (4:3 format)
- Uses
templates/shortcodes/partials/list-images.php - Best for image-heavy portfolios and galleries
- Title and button overlaid on image
- No borders, no gaps between cards
- Dramatic hover zoom effect (respects
prefers-reduced-motion)
All layouts support:
- Featured references (special CSS class)
- All filter controls with smooth animated transitions
- Custom styling via
classandstyleattributes - Accessibility features (ARIA labels, keyboard navigation)
How do I use the shortcode generator?
Navigate to References → Shortcodes in your WordPress admin to access the interactive shortcode generator:
Features:
- Visual form with all available options
- Live shortcode preview
- One-click copy to clipboard
- Explanations for each attribute
- Example values for all fields
Steps:
- Select your desired layout (list, cards, or images)
- Set number of references to display
- Choose sort order (ascending or descending)
- Enable filters if needed and select which ones to show
- Add pre-filtering by type, filter 1, filter 2, customer, or location (comma-separated IDs)
- Click "Generate Shortcode" to see the result
- Click "Copy to Clipboard" to copy the shortcode
- Paste it into any page or post
How do I disable the reference archive page?
If you don't want visitors to access /references/, you can redirect them:
- Go to References → Options in WordPress admin
- Check "Disable Reference Archive"
- Optionally enter a custom redirect URL (defaults to homepage)
- Click "Save Changes"
When enabled:
- Visitors accessing
/references/are redirected (HTTP 307) - Single reference pages remain accessible at
/references/post-slug/ - Useful if you only want references displayed via shortcodes
How do image galleries work?
References can have image galleries with a professional lightbox modal:
Features:
- Thumbnail grid (200×200px square thumbnails)
- Lightbox modal on click (1400px width images)
- Previous/Next navigation buttons
- Keyboard navigation (arrow keys, Escape to close)
- Image counter (e.g., "Image 3 of 8")
- Responsive and accessible
- Gallery appears on single reference pages automatically
To add a gallery:
- Edit a reference in WordPress admin
- Scroll to the "Image Gallery" field (ACF Gallery field)
- Click "Add to gallery" and select/upload images
- Drag to reorder images
- Save the reference
The gallery will automatically display on the single reference page with thumbnails and lightbox functionality.
How do filter animations work?
The plugin includes smooth CSS animations when filtering references:
Animation behavior:
- Fade-out: Items slide up slightly and fade to transparent (0.3s)
- Fade-in: Items slide down and fade to visible (0.3s)
- Respects accessibility: Animations are disabled if user has
prefers-reduced-motionenabled - No jQuery needed: Pure CSS transitions with JavaScript state management
For users with motion preferences:
prefers-reduced-motion: no-preference→ Smooth animationsprefers-reduced-motion: reduce→ Instant show/hide (no animation)
This ensures the filtering is both visually engaging and accessible to all users.
Installation
Prerequisites
Before installing this plugin, ensure you have:
- WordPress 6.9 or higher
- PHP 8.3 or higher
- Advanced Custom Fields Pro installed and activated
- ACF Quick Edit Fields installed and activated
Method 1: Upload via WordPress Admin (Recommended)
- Download the latest release ZIP file from the GitHub Releases page
- In your WordPress admin panel, navigate to Plugins → Add New
- Click the Upload Plugin button at the top of the page
- Click Choose File and select the downloaded
jpkcom-acf-references.zipfile - Click Install Now and wait for the upload to complete
- Click Activate Plugin to enable the plugin immediately
Method 2: Manual Installation via FTP/SFTP
- Download the latest release ZIP file from the GitHub Releases page
- Extract the ZIP file on your local computer
- Using an FTP/SFTP client, upload the extracted
jpkcom-acf-referencesfolder to/wp-content/plugins/ - In your WordPress admin panel, navigate to Plugins
- Find "JPKCom ACF References" in the list and click Activate
Method 3: GitHub Clone (For Developers)
cd /path/to/wordpress/wp-content/plugins/
git clone https://github.com/JPKCom/jpkcom-acf-references.git
Then activate the plugin in the WordPress admin panel.
Post-Installation Steps
- Verify Dependencies: Go to Plugins and ensure ACF Pro and ACF Quick Edit Fields are active
- Check Custom Post Types: You should now see References, Locations, and Customers in your admin menu
- Explore Admin Pages:
- Visit References → Shortcodes to use the shortcode generator
- Visit References → Options to configure archive redirect settings
- Create Test Content:
- Create a location: Locations → Add New
- Create a customer: Customers → Add New
- Create a reference: References → Add New (assign the location and customer, add images to gallery)
- View Frontend: Visit
/references/on your site to see the reference archive - Test Shortcode: Use the shortcode generator to create a filtered list and paste it into a test page
- Add to Navigation (Optional): Add the reference archive to your site menu via Appearance → Menus
Automatic Updates
Once installed, the plugin will automatically check for updates from GitHub. Update notifications will appear in:
- Dashboard → Updates
- Plugins page (update notice below plugin name)
Simply click Update Now to install the latest version securely with SHA256 checksum verification.
Multisite Installation
This plugin is network-compatible. To install on a multisite network:
- Follow Method 1 or 2 above
- Go to Network Admin → Plugins
- Click Network Activate to enable on all sites, or activate individually per site
Troubleshooting Installation
Issue: Plugin fails to activate
- Ensure PHP 8.3+ and WordPress 6.9+ requirements are met
- Check that ACF Pro is installed and activated first
Issue: No References menu in admin
- Verify the plugin is activated (not just installed)
- Check for PHP errors in Tools → Site Health → Info → Server
Issue: Templates not displaying correctly
- Ensure your theme supports Bootstrap 5 markup, or customize the templates
- Enable
WP_DEBUGto load debug templates for troubleshooting
Issue: Interactive filters not working
- Verify that JavaScript is enabled in the browser
- Check browser console for JavaScript errors
- Ensure Bootstrap 5 JavaScript is loaded (required for dropdown functionality)
- Confirm that
show_filters="true"attribute is set in the shortcode
Issue: Filter dropdowns appear empty
- Verify that taxonomy terms are assigned to references
- Check that references are published (not draft)
- Ensure the correct taxonomy slug is used
- Confirm
show_filterattribute includes the correct filter indexes (0, 1, or 2)
Changelog
1.2.1
- Fixed: two 1.2.0 release notes described
includes/references-data.phpas the single home of the visibility rule — one of them saying the abilities apply the shortcode's rule "not a copy of it". That is not what shipped.jpkcom_acf_references_build_reference_query_args()is called fromincludes/abilities.phpand from nowhere else, whileincludes/shortcodes.phpstill assembles the same clauses inline. The two agree, and that was verified by comparing the generated SQL and the returned post IDs — but agreeing is not sharing, and two implementations can drift apart the moment either is edited. The claim mattered because it was the reason to trust that the abilities cannot disagree with the site's own listing; that trust now rests on a measurement rather than on a shared function. Both notes have been corrected and marked, and the developer documentation now records that a change to the rule has to be made in both files until the shortcode is moved over. No behaviour is affected
1.2.0
- Added: three read-only WordPress Abilities —
jpkcom-acf-references/list-filters,jpkcom-acf-references/query-referencesandjpkcom-acf-references/get-reference— so AI assistants, MCP clients and REST automation can read your references as structured data instead of scraping the page. They are on by default for logged-in users with thereadcapability and can be switched off entirely withdefine( 'JPKCOM_ACFREFERENCES_ABILITIES', false ) - Added: the abilities return only references your site's own listing shows, and they apply the same visibility rule the
[jpkcom_acf_references_list]shortcode applies. The short description and the image gallery are returned only for a reference whose page a visitor could actually open: one that redirects to an external URL and one whose expiry date has passed both have no public detail page, so those fields are withheld and the reason is stated in the answer. This entry as originally published added "not a copy of it" about the shared rule. That was wrong — there are two implementations; see 1.2.1 - Added:
includes/references-data.php, which holds the visibility rule and the projection of a reference into plain data for the abilities. The shortcode returns exactly what it returned previously — verified by comparing the generated SQL and the returned post IDs before and after the change. This entry as originally published read as though the rule had moved out of the shortcode. It did not; see 1.2.1 - Added:
jpkcom_acf_references_ability_metaandjpkcom_acf_references_ability_capabilityfilters, so a site can change which abilities are exposed and who may run them - Changed: WordPress 7.0 is now the minimum. Up to 6.9 an unexpected error inside an ability callback ended the whole request with a blank page instead of a readable message. From 7.0 WordPress catches it itself
- Note: filtering by a value that does not exist on this site returns no references and names the value under
unknown, rather than quietly returning everything. A filter that is partly recognisable still narrows by the part that was
1.1.3
- Changed: the update manifest generator now defaults a missing
Network:header to false instead of true, matching WordPress' own default. No change for this plugin, which declaresNetwork: trueexplicitly - CI: the lint and guard workflow now also runs on pushes to
main. It only covered pull requests, so a direct push with bypass rights skipped every check - Changed: comments, workflow step names and CI output across the repository are now English throughout, and the developer notes in
CLAUDE.mdwere translated and trimmed. No effect on the shipped plugin
1.1.2
- Changed:
Tested up toraised to WordPress 7.1 - Changed: the bundled updater's runtime floor now matches the plugin's own minimum. It bailed out below WordPress 6.8 while the plugin header has required 6.9 for several releases, so the check could never fire on a supported installation
- Docs: the remaining "WordPress 6.8" requirement statements now say 6.9, matching the plugin header
- CI: the release manifest's fallback values for
requiresandtestednow say 6.9 and 7.1. They only apply when the README metadata cannot be read, but a stale fallback would have published a minimum the plugin no longer supports
1.1.1
- Changed: the plugin banners (
assets/banner-1544x500.avif,assets/banner-772x250.avif) are now a plain#3c4955surface with no lettering
1.1.0
- Changed: the three taxonomy filters of the list shortcode use
tax_queryinstead ofmeta_querywithLIKEover the serialised ACF values. A leading wildcard cannot use an index, so each clause scanned every meta row for that key; the term relations ACF already writes are indexed. Verified against real data: identical results in all 14 filter combinations tested - Fixed: on a multilingual site (WPML) the filter returned nothing in every secondary language. A shortcode carries the default-language term ID, the old clause searched for it in translations whose meta holds the translated ID, and found nothing. Measured: 0 results before, 6 after
- Fixed:
tools/check-term-sync.phpcould not run at all. Adeclare(strict_types=1)sat halfway down the file, andwp eval-fileevaluates the contents — so the documented invocation ended in a fatal error every time - Fixed: the same script reported every translated post as drifted, because it compared raw meta against
wp_get_object_terms(), which WPML rewrites to the current language - Changed: non-numeric values in
type,filter_1andfilter_2now produce no filter rather than one that matches nothing
1.0.9
- Fixed: reference expiry was compared against the UTC date. WordPress sets the PHP timezone to UTC, so
date( 'Y-m-d' )returns the UTC day and expired references stayed visible for the length of the site's UTC offset after local midnight (1–2 hours for Europe/Berlin). All three comparison sites now usecurrent_time( 'Y-m-d' ) - Fixed: the single-reference redirect checked
current_user_can( 'administrator' ), passing a role name where a capability belongs. That works only because the role is a key in the capability array, bypassingmap_meta_capand missing differently named roles with the same rights. Now checksmanage_options, consistent with the sibling handlers in the same file - Added:
tools/check-term-sync.php— a read-only checker that reports whether the serialised ACF meta values and the real taxonomy term assignments agree. Required groundwork before the shortcode filters can move from unindexedmeta_query+LIKEto indexedtax_query - Added:
tests/test-conventions.php— regression guards so neither the UTC date form nor a role-as-capability check can return unnoticed. Run in CI on every pull request
1.0.8
- Security: update packages are now verified before installation — the verified file is handed to WordPress instead of being downloaded a second time, so the bytes that were checked are the bytes that get installed
- Security: a missing or unfetchable SHA-256 checksum now aborts the update instead of installing unverified code (previously it silently skipped verification)
- Security: pinned every GitHub Action to a full commit SHA and added Dependabot with a 7-day cooldown, so a moved tag can no longer change the release build
- Security: tightened which download the updater claims, so sibling plugins cannot match each other's package
- Fixed:
sprintf()calls in the updater bound named arguments to a variadic parameter, which raisesArgumentCountErroron PHP 8.3 - Fixed: the "View Details" modal could fail with a
TypeErrorwhen the manifest omittedrequires_plugins - Performance: a failed manifest fetch is now cached for an hour instead of being retried on every admin request
- Added: CI workflow on every pull request (PHP lint, named-argument check, YAML validation, action-pinning guard)
- Housekeeping: removed an unused
messages.mofrom the release package
1.0.7
- Fixed a leftover duplicate logo call in the reference customer partial that passed the ACF field array where an attachment ID is expected, which could render an unrelated image before every customer logo
1.0.6
- Raised the minimum WordPress version to 6.9 and "Tested up to" to WordPress 7.0
- Switched license metadata to the SPDX identifier
GPL-2.0-or-laterwith the HTTPS license URI
1.0.5
- Security: updater prefers an exact match against the manifest
download_urlover the slug heuristic, so a tampered manifest can no longer bypass the checksum gate - Security: timing-safe checksum comparison (
hash_equals()) with anis_string()guard againsthash_file()failures - Security: manifest fetch via
wp_safe_remote_get()(SSRF defense-in-depth) - Fixed PHP warning and missing contributor names in the plugin detail popup (
display_namenow provided) - Fixed PHP warning/deprecation on
wp plugin listby completing theno_updatetransient entry (new_version,package,tested,requires_php)
1.0.4
- Fixed pagination layout not wrapping on small screens or with long post titles
- Pagination items now use
flex-wrapand consistentpage-linkstyling - Previous/next links are hidden when no adjacent post exists
- Improved output escaping across all templates:
__()→esc_html__(),get_the_title()→esc_html(),get_field()→esc_html(),get_the_date()→esc_attr(),get_post_type_archive_link()→esc_url()
1.0.3
- Fixed updater checksum verification failing on manual ZIP uploads (local file paths mistaken for URLs)
- Fixed release ZIP missing top-level directory, causing WordPress to not recognize plugin updates
1.0.2
- Added check for "SitePress" class
1.0.1
- Fix for incorrect database content caused by WPML
1.0.0
- Initial Release
Releases
16 releases. Each count is every asset in that release; expand a row for the breakdown.
v1.2.4
latest
Oct 21, 2026 1d ago
jpkcom-acf-references.zip
+1 asset
7
Oct 21, 2026 1d ago
jpkcom-acf-references.zip
+1 asset
2
Oct 19, 2026 3d ago
jpkcom-acf-references.zip
+1 asset
6
Aug 11, 2026 2mo ago
jpkcom-acf-references.zip
+1 asset
11
Aug 11, 2026 2mo ago
jpkcom-acf-references.zip
+1 asset
1
Jul 30, 2026 2mo ago
jpkcom-acf-references.zip
+1 asset
10
Jul 29, 2026 2mo ago
jpkcom-acf-references.zip
+1 asset
4
Jul 28, 2026 2mo ago
jpkcom-acf-references.zip
+1 asset
1
Jul 28, 2026 2mo ago
jpkcom-acf-references.zip
+1 asset
0
Jul 27, 2026 2mo ago
jpkcom-acf-references.zip
+1 asset
7
Jul 27, 2026 2mo ago
jpkcom-acf-references.zip
+1 asset
2
Jul 27, 2026 2mo ago
jpkcom-acf-references.zip
+1 asset
0
Jun 16, 2026 4mo ago
jpkcom-acf-references.zip
+1 asset
7
Jun 16, 2026 4mo ago
jpkcom-acf-references.zip
+1 asset
0
Mar 16, 2026 7mo ago
jpkcom-acf-references.zip
+1 asset
0
Mar 13, 2026 7mo ago
jpkcom-acf-references.zip
+1 asset
2
Active-site estimate ≈10 comes from the median of recent superseded releases. Method.