{"id":321094,"date":"2026-08-03T16:19:17","date_gmt":"2026-08-03T16:19:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ingotforge-cards-for-acf\/"},"modified":"2026-08-03T16:18:53","modified_gmt":"2026-08-03T16:18:53","slug":"ingotforge-cards-for-acf","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ingotforge-cards-for-acf\/","author":23481317,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.6.5","stable_tag":"1.6.5","tested":"7.0.3","requires":"5.3","requires_php":"7.4","requires_plugins":null,"header_name":"IngotForge Cards for ACF","header_author":"ingotpress","header_description":"Display responsive cards using ACF data with grid, list, and slider layouts, AJAX pagination, and styling controls.","assets_banners_color":"667384","last_updated":"2026-08-03 16:18:53","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ingotforge.wordpress.com","header_plugin_uri":"","header_author_uri":"https:\/\/ingotforge.wordpress.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.1":{"tag":"1.5.1","author":"ingotpress","date":"2026-06-30 20:21:15"},"1.6.5":{"tag":"1.6.5","author":"ingotpress","date":"2026-08-03 16:18:53"}},"upgrade_notice":{"1.6.5":"<p>Adds an optional instance background control. Existing shortcodes are unchanged when <code>container_bg<\/code> is omitted. No migration required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3591927,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3591927,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1444x500.png":{"filename":"banner-1444x500.png","revision":3591927,"resolution":"1444x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3591927,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.1","1.6.5"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2211,14240,2010,6040,611],"plugin_category":[59],"plugin_contributors":[269642],"plugin_business_model":[],"class_list":["post-321094","plugin","type-plugin","status-publish","hentry","plugin_tags-acf","plugin_tags-cards","plugin_tags-custom-fields","plugin_tags-grid","plugin_tags-slider","plugin_category-utilities-and-tools","plugin_contributors-ingotpress","plugin_committers-ingotpress"],"banners":{"banner":"https:\/\/ps.w.org\/ingotforge-cards-for-acf\/assets\/banner-772x250.png?rev=3591927","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ingotforge-cards-for-acf\/assets\/icon-128x128.png?rev=3591927","icon_2x":"https:\/\/ps.w.org\/ingotforge-cards-for-acf\/assets\/icon-256x256.png?rev=3591927","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>IngotForge Cards for ACF displays posts and ACF data as responsive cards. Version 1.6.5 retains <code>[ingotforge_cards]<\/code>, existing shortcode defaults, and stored data.<\/p>\n\n<p>Main features:<\/p>\n\n<ul>\n<li>Grid, list, and accessible Swiper slider layouts.<\/li>\n<li>AJAX pagination for grid and list layouts.<\/li>\n<li>ACF text, textarea, date, taxonomy, post object, relationship, file, and common scalar return types.<\/li>\n<li>Post type, taxonomy, meta, multiple-filter, and <code>{today}<\/code> date filtering.<\/li>\n<li>The Events Calendar date, cost, venue, upcoming-event, and past-event support.<\/li>\n<li>Visibility controls for images, titles, excerpts, ACF fields, taxonomy fields, dates, and document buttons.<\/li>\n<li>Instance-container, card, image, typography, spacing, border, shadow, hover, and responsive-height controls.<\/li>\n<li>Image-only cards and optional removal of image\/title links.<\/li>\n<li>Instance-scoped styles and slider controls for pages containing multiple shortcodes.<\/li>\n<li>Conditional slider assets: Swiper loads only when a slider instance is rendered.<\/li>\n<li>Keyboard, focus, status, reduced-motion, and error-handling improvements.<\/li>\n<li>No analytics, tracking, telemetry, or external runtime asset requests.<\/li>\n<\/ul>\n\n<p>The complete option reference and examples are available after activation under <strong>Settings &gt; IngotForge Cards Manual<\/strong> and in <code>SHORTCODE-REFERENCE.md<\/code> inside the plugin package.<\/p>\n\n<h3>Examples<\/h3>\n\n<h4>Responsive programme grid<\/h4>\n\n<pre><code>[ingotforge_cards post_type=\"programme\" fields=\"division,start_date\" columns=\"3\" per_page=\"9\"]\n<\/code><\/pre>\n\n<h4>Filtered document list<\/h4>\n\n<pre><code>[ingotforge_cards post_type=\"document\" layout=\"list\" fields=\"description,pdf_documents_url,document_type\" meta_filters=\"division:39175|document_type:32:LIKE\" tax_filters=\"category:finance\" per_page=\"6\"]\n<\/code><\/pre>\n\n<h4>Upcoming event cards<\/h4>\n\n<pre><code>[ingotforge_cards post_type=\"tribe_events\" fields=\"event_start_date,event_venue\" event_display=\"upcoming\" per_page=\"6\"]\n<\/code><\/pre>\n\n<h4>Responsive modern cards<\/h4>\n\n<pre><code>[ingotforge_cards post_type=\"programme\" fields=\"division\" card_border_width=\"0\" card_border_radius=\"18px\" card_shadow=\"0 8px 28px rgba(15,23,42,.12)\" card_hover_shadow=\"0 18px 44px rgba(15,23,42,.18)\" card_height_desktop=\"440px\" card_height_tablet=\"400px\" card_height_mobile=\"auto\"]\n<\/code><\/pre>\n\n<h4>Accessible autoplay slider<\/h4>\n\n<pre><code>[ingotforge_cards post_type=\"testimonial\" layout=\"slider\" fields=\"client_name,quote\" slides_per_view=\"3\" slider_autoplay=\"true\" slider_delay=\"5000\" slider_pause_on_hover=\"true\" slider_pause_on_focus=\"true\"]&lt;h3&gt;Developer Integration&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>Optional extension points:<\/p>\n\n<ul>\n<li><code>ingotforge_acf_cards_shortcode_args<\/code> filters normalized shortcode arguments.<\/li>\n<li><code>ingotforge_acf_cards_query_args<\/code> filters final <code>WP_Query<\/code> arguments.<\/li>\n<li><code>ingotforge_acf_cards_card_html<\/code> filters each rendered card before the plugin's final allowed-HTML pass.<\/li>\n<li><code>ingotforge_acf_cards_asset_requirements<\/code> filters styles detected before shortcode rendering.<\/li>\n<li><code>ingotforge:cards:updated<\/code> fires after successful AJAX pagination.<\/li>\n<li><code>ingotforge:cards:slider-ready<\/code> fires when a slider is initialized.<\/li>\n<li>Trigger <code>ingotforge:cards:refresh<\/code> after dynamically inserting slider markup.<\/li>\n<li><code>window.IngotForgeCards.loadPage(container, page)<\/code> and <code>window.IngotForgeCards.initSliders(context)<\/code> are available for controlled integrations.<\/li>\n<\/ul>\n\n<p>All approved <code>ingotforge<\/code> PHP identifiers, options, AJAX actions, handles, CSS prefixes, and shortcode names are retained.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin does not collect analytics, track users, create remote accounts, or send site content or personal data to an external service. Its front-end JavaScript communicates only with the site's own WordPress AJAX endpoint when AJAX pagination is used.<\/p>\n\n<h3>Third-Party Library<\/h3>\n\n<p>Swiper v11.1.14 is bundled in <code>assets\/js\/swiper-bundle.min.js<\/code> and <code>assets\/css\/swiper-bundle.min.css<\/code>.<\/p>\n\n<ul>\n<li>Project: <a href=\"https:\/\/swiperjs.com\/\">Swiper<\/a><\/li>\n<li>Source for the bundled version: <a href=\"https:\/\/github.com\/nolimits4web\/swiper\/tree\/v11.1.14\/src\">Swiper 11.1.14 source<\/a><\/li>\n<li>License: MIT<\/li>\n<\/ul>\n\n<p>The files are served locally. The plugin does not contact the Swiper project or a CDN at runtime.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the ZIP through <strong>Plugins &gt; Add New Plugin &gt; Upload Plugin<\/strong>, or copy the <code>ingotforge-cards-for-acf<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate <strong>IngotForge Cards for ACF<\/strong>.<\/li>\n<li>Activate Advanced Custom Fields or Advanced Custom Fields PRO.<\/li>\n<li>Add <code>[ingotforge_cards]<\/code> to a page, post, block, widget, or page-builder shortcode element.<\/li>\n<li>Open <strong>Settings &gt; IngotForge Cards Manual<\/strong> for the full reference.<\/li>\n<\/ol>\n\n<p>Basic example:<\/p>\n\n<pre><code>[ingotforge_cards post_type=\"post\" fields=\"location,event_date\" columns=\"3\"]\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20update%20change%20the%20shortcode%20or%20saved%20data%3F\"><h3>Does this update change the shortcode or saved data?<\/h3><\/dt>\n<dd><p>No. The shortcode remains <code>[ingotforge_cards]<\/code>. Version 1.6.5 does not add a database table, rename the existing option, or require content migration.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20require%20advanced%20custom%20fields%3F\"><h3>Does the plugin require Advanced Custom Fields?<\/h3><\/dt>\n<dd><p>Yes. Advanced Custom Fields or Advanced Custom Fields PRO must provide the <code>get_field()<\/code> and <code>get_field_object()<\/code> functions.<\/p><\/dd>\n<dt id=\"can%20it%20display%20custom%20post%20types%3F\"><h3>Can it display custom post types?<\/h3><\/dt>\n<dd><p>Yes. Use the registered post type slug, for example:<\/p>\n\n<pre><code>[ingotforge_cards post_type=\"document\" fields=\"description,pdf_documents_url\"]\n<\/code><\/pre><\/dd>\n<dt id=\"can%20i%20hide%20individual%20card%20elements%3F\"><h3>Can I hide individual card elements?<\/h3><\/dt>\n<dd><p>Yes. Controls include <code>show_title<\/code>, <code>show_image<\/code>, <code>show_excerpt<\/code>, <code>show_acf_fields<\/code>, <code>show_taxonomies<\/code>, <code>show_date<\/code>, and <code>show_button<\/code>.<\/p>\n\n<p>Image-only example:<\/p>\n\n<pre><code>[ingotforge_cards post_type=\"programme\" show_title=\"false\" show_excerpt=\"false\" show_acf_fields=\"false\" show_button=\"false\"]\n<\/code><\/pre><\/dd>\n<dt id=\"can%20i%20disable%20image%20and%20title%20links%3F\"><h3>Can I disable image and title links?<\/h3><\/dt>\n<dd><p>Yes. Set <code>link_to=\"none\"<\/code>. The legacy default remains <code>link_to=\"post\"<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20style%20the%20background%20behind%20the%20complete%20card%20instance%3F\"><h3>Can I style the background behind the complete card instance?<\/h3><\/dt>\n<dd><p>Yes. Use <code>container_bg<\/code> for the outer instance and <code>card_bg<\/code> for individual cards. It accepts HEX, RGB\/RGBA, <code>transparent<\/code>, and safe gradients, and is empty by default.<\/p>\n\n<p>Example: <code>container_bg=\"linear-gradient(135deg, #ffffff 0%, #e2e8f0 100%)\"<\/code><\/p><\/dd>\n<dt id=\"can%20columns%20control%20the%20number%20of%20cards%20in%20a%20slider%3F\"><h3>Can columns control the number of cards in a slider?<\/h3><\/dt>\n<dd><p>Yes. With <code>layout=\"slider\"<\/code>, explicit <code>columns<\/code> is a compatibility alias when <code>slides_per_view<\/code> is omitted. <code>slides_per_view<\/code> wins when both are supplied.<\/p><\/dd>\n<dt id=\"are%20slider%20files%20loaded%20on%20every%20page%3F\"><h3>Are slider files loaded on every page?<\/h3><\/dt>\n<dd><p>No. The plugin pre-detects common shortcode placements so required styles can be printed in the page head. The shortcode callback remains as a fallback for builders and templates stored elsewhere. Swiper CSS and JavaScript load only when at least one instance uses <code>layout=\"slider\"<\/code>.<\/p><\/dd>\n<dt id=\"is%20swiper%20loaded%20from%20a%20cdn%3F\"><h3>Is Swiper loaded from a CDN?<\/h3><\/dt>\n<dd><p>No. Swiper v11.1.14 is bundled locally and makes no remote request by itself.<\/p><\/dd>\n<dt id=\"which%20design%20value%20formats%20are%20supported%3F\"><h3>Which design value formats are supported?<\/h3><\/dt>\n<dd><p>Design options accept validated values such as HEX, RGB, RGBA, HSL, HSLA, <code>currentColor<\/code>, CSS variables, dimensions, shadows, and supported CSS functions. Values attempting to add declarations, URLs, markup, at-rules, or <code>!important<\/code> are rejected.<\/p><\/dd>\n<dt id=\"how%20do%20i%20troubleshoot%20an%20empty%20result%3F\"><h3>How do I troubleshoot an empty result?<\/h3><\/dt>\n<dd><p>Confirm that the post type and ACF field names are correct and that matching posts are published. Administrators can temporarily add <code>debug=\"true\"<\/code>; debug output is not shown to visitors without the <code>manage_options<\/code> capability.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.5<\/h4>\n\n<ul>\n<li>Added the opt-in <code>container_bg<\/code> shortcode attribute for the background behind the complete shortcode instance.<\/li>\n<li>Preserved existing output and theme\/Elementor backgrounds when <code>container_bg<\/code> is omitted; <code>card_bg<\/code> continues to style individual cards only.<\/li>\n<\/ul>\n\n<h4>1.6.4<\/h4>\n\n<ul>\n<li>Fixed symbolic comparisons in <code>meta_compare<\/code> and <code>meta_filters<\/code>; compound <code>{today}<\/code> ranges are no longer truncated.<\/li>\n<li>Added entity decoding and aliases; APIs are unchanged.<\/li>\n<\/ul>\n\n<h4>1.6.3<\/h4>\n\n<ul>\n<li>Clarified the admin manual and warns when legacy <code>[acf_cards]<\/code> is registered elsewhere; front-end behavior is unchanged.<\/li>\n<\/ul>\n\n<h4>1.6.2<\/h4>\n\n<ul>\n<li>Restored approved slider sizing and supported explicit <code>columns<\/code> when <code>slides_per_view<\/code> is omitted.<\/li>\n<li>Preserved explicit <code>slides_per_view<\/code>, grid columns, and the 1.6.1 corrections.<\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>Corrected field alignment, image\/card heights, query normalization, AJAX consistency, and early conditional style detection.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Added compatible design, visibility, image, slider, accessibility, AJAX, security, and developer-integration improvements while retaining the approved public interface.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Added <code>not_found_text<\/code> for custom empty-state messages.<\/li>\n<\/ul>\n\n<p>Earlier release history is included in <code>changelog.txt<\/code>.<\/p>","raw_excerpt":"Display responsive ACF cards in grid, list, or slider layouts with filtering, AJAX pagination, and scoped design controls.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/321094","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=321094"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ingotpress"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=321094"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=321094"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=321094"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=321094"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=321094"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=321094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}