Changeset 3441706
- Timestamp:
- 01/17/2026 10:04:58 PM (3 months ago)
- Location:
- cardcrafter-data-grids
- Files:
-
- 4 edited
- 23 copied
-
tags/1.12.0 (copied) (copied from cardcrafter-data-grids/trunk)
-
tags/1.12.0/CHANGELOG.md (copied) (copied from cardcrafter-data-grids/trunk/CHANGELOG.md) (1 diff)
-
tags/1.12.0/DATA_EXPORT_IMPACT_REPORT.md (copied) (copied from cardcrafter-data-grids/trunk/DATA_EXPORT_IMPACT_REPORT.md)
-
tags/1.12.0/ELEMENTOR_PRO_DYNAMIC_CONTENT_IMPACT_REPORT.md (copied) (copied from cardcrafter-data-grids/trunk/ELEMENTOR_PRO_DYNAMIC_CONTENT_IMPACT_REPORT.md)
-
tags/1.12.0/FREEMIUM_BUSINESS_MODEL_IMPACT_REPORT.md (copied) (copied from cardcrafter-data-grids/trunk/FREEMIUM_BUSINESS_MODEL_IMPACT_REPORT.md)
-
tags/1.12.0/RELEASE_SUMMARY_v1.7.0.md (copied) (copied from cardcrafter-data-grids/trunk/RELEASE_SUMMARY_v1.7.0.md)
-
tags/1.12.0/app (copied) (copied from cardcrafter-data-grids/trunk/app)
-
tags/1.12.0/assets/css/cardcrafter.css (copied) (copied from cardcrafter-data-grids/trunk/assets/css/cardcrafter.css)
-
tags/1.12.0/assets/css/elementor.css (copied) (copied from cardcrafter-data-grids/trunk/assets/css/elementor.css)
-
tags/1.12.0/assets/js/admin.js (copied) (copied from cardcrafter-data-grids/trunk/assets/js/admin.js) (3 diffs)
-
tags/1.12.0/assets/js/cardcrafter.js (copied) (copied from cardcrafter-data-grids/trunk/assets/js/cardcrafter.js)
-
tags/1.12.0/assets/js/elementor-editor.js (copied) (copied from cardcrafter-data-grids/trunk/assets/js/elementor-editor.js)
-
tags/1.12.0/assets/js/elementor-frontend.js (copied) (copied from cardcrafter-data-grids/trunk/assets/js/elementor-frontend.js)
-
tags/1.12.0/assets/js/frontend.js (copied) (copied from cardcrafter-data-grids/trunk/assets/js/frontend.js)
-
tags/1.12.0/assets/js/license-manager.js (copied) (copied from cardcrafter-data-grids/trunk/assets/js/license-manager.js)
-
tags/1.12.0/cardcrafter.php (copied) (copied from cardcrafter-data-grids/trunk/cardcrafter.php) (4 diffs)
-
tags/1.12.0/demo-data/acf-examples.json (copied) (copied from cardcrafter-data-grids/trunk/demo-data/acf-examples.json)
-
tags/1.12.0/demo-data/wordpress-examples.json (copied) (copied from cardcrafter-data-grids/trunk/demo-data/wordpress-examples.json)
-
tags/1.12.0/elementor (copied) (copied from cardcrafter-data-grids/trunk/elementor)
-
tags/1.12.0/includes (copied) (copied from cardcrafter-data-grids/trunk/includes)
-
tags/1.12.0/includes/class-cardcrafter-license-manager.php (copied) (copied from cardcrafter-data-grids/trunk/includes/class-cardcrafter-license-manager.php)
-
tags/1.12.0/readme.txt (copied) (copied from cardcrafter-data-grids/trunk/readme.txt) (4 diffs)
-
tags/1.12.0/views (copied) (copied from cardcrafter-data-grids/trunk/views)
-
trunk/CHANGELOG.md (modified) (1 diff)
-
trunk/assets/js/admin.js (modified) (3 diffs)
-
trunk/cardcrafter.php (modified) (4 diffs)
-
trunk/readme.txt (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
cardcrafter-data-grids/tags/1.12.0/CHANGELOG.md
r3441236 r3441706 2 2 3 3 All notable changes to CardCrafter will be documented in this file. 4 5 ## [1.12.0] - 2026-01-17 6 7 ### 🆕 MAJOR: Native WordPress Posts Integration 8 - **NEW**: One-click WordPress Posts grid functionality with "Use WP Posts" button 9 - **NEW**: Automatic featured image, title, excerpt, and permalink extraction from WordPress posts 10 - **NEW**: Live preview of WordPress posts with all display options (search, filters, pagination) 11 - **NEW**: Enhanced AJAX endpoint `cardcrafter_wp_posts_preview` for real-time WordPress content 12 - **NEW**: Automatic cache clearing and debug mode for troubleshooting image issues 13 14 ### 🔧 Technical Improvements 15 - **IMPROVED**: Enhanced caching system with `cache_results => false` for fresh data 16 - **IMPROVED**: Fallback image handling (medium → full size → placeholder) 17 - **IMPROVED**: Debug information in AJAX responses for troubleshooting 18 - **PERFORMANCE**: Optimized WordPress queries with cache-busting mechanisms 19 - **ACCESSIBILITY**: WordPress posts include proper semantic structure and alt text 20 21 ### 🎯 User Experience 22 - **ENHANCED**: Admin interface now supports both JSON data and WordPress posts seamlessly 23 - **STREAMLINED**: Single-click integration for existing WordPress content 24 - **FLEXIBLE**: All existing display options work with WordPress posts (search, filters, export, etc.) 4 25 5 26 ## [1.9.0] - 2026-01-17 -
cardcrafter-data-grids/tags/1.12.0/assets/js/admin.js
r3441692 r3441706 117 117 container.innerHTML = `<div id="${cardId}" class="cardcrafter-container">${cardcrafterAdmin.i18n.loading}</div>`; 118 118 119 // Use the secure proxy for admin previews too120 const proxyUrl = `${cardcrafterAdmin.ajaxurl}?action=cardcrafter_proxy_fetch&url=${encodeURIComponent(url)}&nonce=${cardcrafterAdmin.nonce}`;121 122 119 // Get additional options 123 120 const enableSearch = document.getElementById('cc-enable-search'); … … 131 128 const itemsPerPage = document.getElementById('cc-items-per-page'); 132 129 130 // Determine source URL based on whether it's wp_posts or external URL 131 let sourceUrl; 132 if (url === 'wp_posts') { 133 // For WordPress posts, use a special AJAX endpoint 134 sourceUrl = `${cardcrafterAdmin.ajaxurl}?action=cardcrafter_wp_posts_preview&nonce=${cardcrafterAdmin.nonce}`; 135 } else { 136 // For external URLs, use the secure proxy 137 sourceUrl = `${cardcrafterAdmin.ajaxurl}?action=cardcrafter_proxy_fetch&url=${encodeURIComponent(url)}&nonce=${cardcrafterAdmin.nonce}`; 138 } 139 133 140 new CardCrafter({ 134 141 selector: '#' + cardId, 135 source: proxyUrl,142 source: sourceUrl, 136 143 layout: layoutSelect.value, 137 144 columns: parseInt(columnsSelect.value), … … 150 157 } 151 158 }); 159 160 // Use WP Posts functionality 161 const wpPostsBtn = document.getElementById('cc-wp-posts-btn'); 162 if (wpPostsBtn) { 163 wpPostsBtn.addEventListener('click', function() { 164 // Set the source to use WordPress posts 165 urlInput.value = 'wp_posts'; 166 updateShortcode(); 167 168 // Auto-trigger preview 169 previewBtn.click(); 170 }); 171 } 152 172 153 173 // Copy shortcode functionality -
cardcrafter-data-grids/tags/1.12.0/cardcrafter.php
r3441692 r3441706 4 4 * Plugin URI: https://github.com/TableCrafter/cardcrafter-data-grids 5 5 * Description: Transform JSON data into beautiful, responsive card grids. Perfect for team directories, product showcases, and portfolio displays. 6 * Version: 1.1 1.06 * Version: 1.12.0 7 7 * Author: fahdi 8 8 * Author URI: https://github.com/TableCrafter … … 21 21 */ 22 22 23 define('CARDCRAFTER_VERSION', '1.1 1.0');23 define('CARDCRAFTER_VERSION', '1.12.0'); 24 24 define('CARDCRAFTER_URL', plugin_dir_url(__FILE__)); 25 25 define('CARDCRAFTER_PATH', plugin_dir_path(__FILE__)); … … 64 64 add_action('wp_ajax_cardcrafter_proxy_fetch', array($this, 'ajax_proxy_fetch')); 65 65 add_action('wp_ajax_nopriv_cardcrafter_proxy_fetch', array($this, 'ajax_proxy_fetch')); 66 67 // WordPress Posts Preview Handler 68 add_action('wp_ajax_cardcrafter_wp_posts_preview', array($this, 'ajax_wp_posts_preview')); 66 69 67 70 // Background Caching … … 953 956 954 957 /** 958 * AJAX handler for WordPress posts preview 959 */ 960 public function ajax_wp_posts_preview() 961 { 962 // Verify nonce 963 $nonce = isset($_REQUEST['nonce']) ? sanitize_text_field(wp_unslash($_REQUEST['nonce'])) : ''; 964 if (!wp_verify_nonce($nonce, 'cardcrafter_proxy_nonce')) { 965 wp_send_json_error('Security check failed.'); 966 } 967 968 // Get recent posts (with cache busting) 969 $posts = get_posts(array( 970 'post_type' => 'post', 971 'post_status' => 'publish', 972 'posts_per_page' => 12, 973 'orderby' => 'date', 974 'order' => 'DESC', 975 'cache_results' => false, // Disable caching for fresh results 976 'no_found_rows' => true 977 )); 978 979 if (empty($posts)) { 980 wp_send_json_error('No WordPress posts found.'); 981 } 982 983 // Convert WordPress posts to CardCrafter data format 984 $card_data = array(); 985 foreach ($posts as $post) { 986 $featured_image = get_the_post_thumbnail_url($post->ID, 'medium'); 987 988 // Fallback to full size if medium doesn't exist 989 if (!$featured_image) { 990 $featured_image = get_the_post_thumbnail_url($post->ID, 'full'); 991 } 992 993 $card_item = array( 994 'id' => $post->ID, 995 'title' => get_the_title($post->ID), 996 'subtitle' => get_the_date('F j, Y', $post->ID), 997 'description' => wp_trim_words(get_the_excerpt($post->ID), 20, '...'), 998 'link' => get_permalink($post->ID), 999 'image' => $featured_image ?: $this->get_placeholder_image(get_the_title($post->ID)), 1000 'post_type' => $post->post_type, 1001 'author' => get_the_author_meta('display_name', $post->post_author), 1002 'debug_thumbnail_id' => get_post_thumbnail_id($post->ID), // Debug info 1003 'debug_image_url' => $featured_image // Debug info 1004 ); 1005 1006 $card_data[] = $card_item; 1007 } 1008 1009 wp_send_json_success($card_data); 1010 } 1011 1012 /** 955 1013 * URL Analytics & Tracking. 956 1014 */ -
cardcrafter-data-grids/tags/1.12.0/readme.txt
r3441692 r3441706 5 5 Tested up to: 6.9 6 6 Requires PHP: 7.4 7 Stable tag: 1.1 1.07 Stable tag: 1.12.0 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 10 10 11 Transform JSON data into beautiful, responsive card grids. Perfect for team directories, product showcases, and portfolio displays.11 Transform JSON data and WordPress posts into beautiful, responsive card grids. Perfect for team directories, product showcases, portfolio displays, and blog content. 12 12 13 13 == Description == … … 15 15 Don't take our word for it, try CardCrafter live. **[Full-featured demo](https://tastewp.com/plugins/cardcrafter-data-grids)** on a real WordPress site. No signup, no download, no risk. 16 16 17 **CardCrafter** is the #1 WordPress plugin for displaying data as beautiful card grids. Transform your WordPress posts, JSON data, and custom content into professional, responsive card layouts. No coding required. 17 **CardCrafter** is the #1 WordPress plugin for displaying data as beautiful card grids. Transform your **WordPress posts**, JSON data, and custom content into professional, responsive card layouts. No coding required. 18 19 🆕 **NEW in v1.12.0:** Native WordPress Posts integration! Display your blog posts, pages, or custom post types as stunning card grids with featured images, excerpts, and automatic formatting. 18 20 19 21 **Perfect for:** … … 38 40 39 41 * **🧱 Gutenberg Block:** Native WordPress block editor support with visual configuration. 42 * **📝 WordPress Posts Grid:** Transform your blog posts into beautiful card layouts with one click. 40 43 * **Instant Search & Sort:** Users can filter and sort cards instantly (Client-side). 41 44 * **Multiple Layouts:** Grid, Masonry, and List views to suit your content. … … 167 170 == Changelog == 168 171 172 = 1.12.0 = 173 * MAJOR: Native WordPress Posts integration - display blog posts as beautiful card grids 174 * NEW: "Use WP Posts" button in admin for one-click WordPress content integration 175 * NEW: Automatic featured image, title, excerpt, and permalink extraction from WordPress posts 176 * NEW: Live preview of WordPress posts with all display options (search, filters, pagination) 177 * IMPROVED: Enhanced caching system with automatic cache clearing for fresh data 178 * IMPROVED: Debug mode for troubleshooting image and thumbnail issues 179 * ACCESSIBILITY: WordPress posts automatically include proper alt text and semantic structure 180 * PERFORMANCE: Optimized queries with cache-busting for real-time preview updates 181 169 182 = 1.11.0 = 170 183 * MAJOR: Enhanced admin UI with modern design and comprehensive display options -
cardcrafter-data-grids/trunk/CHANGELOG.md
r3441236 r3441706 2 2 3 3 All notable changes to CardCrafter will be documented in this file. 4 5 ## [1.12.0] - 2026-01-17 6 7 ### 🆕 MAJOR: Native WordPress Posts Integration 8 - **NEW**: One-click WordPress Posts grid functionality with "Use WP Posts" button 9 - **NEW**: Automatic featured image, title, excerpt, and permalink extraction from WordPress posts 10 - **NEW**: Live preview of WordPress posts with all display options (search, filters, pagination) 11 - **NEW**: Enhanced AJAX endpoint `cardcrafter_wp_posts_preview` for real-time WordPress content 12 - **NEW**: Automatic cache clearing and debug mode for troubleshooting image issues 13 14 ### 🔧 Technical Improvements 15 - **IMPROVED**: Enhanced caching system with `cache_results => false` for fresh data 16 - **IMPROVED**: Fallback image handling (medium → full size → placeholder) 17 - **IMPROVED**: Debug information in AJAX responses for troubleshooting 18 - **PERFORMANCE**: Optimized WordPress queries with cache-busting mechanisms 19 - **ACCESSIBILITY**: WordPress posts include proper semantic structure and alt text 20 21 ### 🎯 User Experience 22 - **ENHANCED**: Admin interface now supports both JSON data and WordPress posts seamlessly 23 - **STREAMLINED**: Single-click integration for existing WordPress content 24 - **FLEXIBLE**: All existing display options work with WordPress posts (search, filters, export, etc.) 4 25 5 26 ## [1.9.0] - 2026-01-17 -
cardcrafter-data-grids/trunk/assets/js/admin.js
r3441692 r3441706 117 117 container.innerHTML = `<div id="${cardId}" class="cardcrafter-container">${cardcrafterAdmin.i18n.loading}</div>`; 118 118 119 // Use the secure proxy for admin previews too120 const proxyUrl = `${cardcrafterAdmin.ajaxurl}?action=cardcrafter_proxy_fetch&url=${encodeURIComponent(url)}&nonce=${cardcrafterAdmin.nonce}`;121 122 119 // Get additional options 123 120 const enableSearch = document.getElementById('cc-enable-search'); … … 131 128 const itemsPerPage = document.getElementById('cc-items-per-page'); 132 129 130 // Determine source URL based on whether it's wp_posts or external URL 131 let sourceUrl; 132 if (url === 'wp_posts') { 133 // For WordPress posts, use a special AJAX endpoint 134 sourceUrl = `${cardcrafterAdmin.ajaxurl}?action=cardcrafter_wp_posts_preview&nonce=${cardcrafterAdmin.nonce}`; 135 } else { 136 // For external URLs, use the secure proxy 137 sourceUrl = `${cardcrafterAdmin.ajaxurl}?action=cardcrafter_proxy_fetch&url=${encodeURIComponent(url)}&nonce=${cardcrafterAdmin.nonce}`; 138 } 139 133 140 new CardCrafter({ 134 141 selector: '#' + cardId, 135 source: proxyUrl,142 source: sourceUrl, 136 143 layout: layoutSelect.value, 137 144 columns: parseInt(columnsSelect.value), … … 150 157 } 151 158 }); 159 160 // Use WP Posts functionality 161 const wpPostsBtn = document.getElementById('cc-wp-posts-btn'); 162 if (wpPostsBtn) { 163 wpPostsBtn.addEventListener('click', function() { 164 // Set the source to use WordPress posts 165 urlInput.value = 'wp_posts'; 166 updateShortcode(); 167 168 // Auto-trigger preview 169 previewBtn.click(); 170 }); 171 } 152 172 153 173 // Copy shortcode functionality -
cardcrafter-data-grids/trunk/cardcrafter.php
r3441692 r3441706 4 4 * Plugin URI: https://github.com/TableCrafter/cardcrafter-data-grids 5 5 * Description: Transform JSON data into beautiful, responsive card grids. Perfect for team directories, product showcases, and portfolio displays. 6 * Version: 1.1 1.06 * Version: 1.12.0 7 7 * Author: fahdi 8 8 * Author URI: https://github.com/TableCrafter … … 21 21 */ 22 22 23 define('CARDCRAFTER_VERSION', '1.1 1.0');23 define('CARDCRAFTER_VERSION', '1.12.0'); 24 24 define('CARDCRAFTER_URL', plugin_dir_url(__FILE__)); 25 25 define('CARDCRAFTER_PATH', plugin_dir_path(__FILE__)); … … 64 64 add_action('wp_ajax_cardcrafter_proxy_fetch', array($this, 'ajax_proxy_fetch')); 65 65 add_action('wp_ajax_nopriv_cardcrafter_proxy_fetch', array($this, 'ajax_proxy_fetch')); 66 67 // WordPress Posts Preview Handler 68 add_action('wp_ajax_cardcrafter_wp_posts_preview', array($this, 'ajax_wp_posts_preview')); 66 69 67 70 // Background Caching … … 953 956 954 957 /** 958 * AJAX handler for WordPress posts preview 959 */ 960 public function ajax_wp_posts_preview() 961 { 962 // Verify nonce 963 $nonce = isset($_REQUEST['nonce']) ? sanitize_text_field(wp_unslash($_REQUEST['nonce'])) : ''; 964 if (!wp_verify_nonce($nonce, 'cardcrafter_proxy_nonce')) { 965 wp_send_json_error('Security check failed.'); 966 } 967 968 // Get recent posts (with cache busting) 969 $posts = get_posts(array( 970 'post_type' => 'post', 971 'post_status' => 'publish', 972 'posts_per_page' => 12, 973 'orderby' => 'date', 974 'order' => 'DESC', 975 'cache_results' => false, // Disable caching for fresh results 976 'no_found_rows' => true 977 )); 978 979 if (empty($posts)) { 980 wp_send_json_error('No WordPress posts found.'); 981 } 982 983 // Convert WordPress posts to CardCrafter data format 984 $card_data = array(); 985 foreach ($posts as $post) { 986 $featured_image = get_the_post_thumbnail_url($post->ID, 'medium'); 987 988 // Fallback to full size if medium doesn't exist 989 if (!$featured_image) { 990 $featured_image = get_the_post_thumbnail_url($post->ID, 'full'); 991 } 992 993 $card_item = array( 994 'id' => $post->ID, 995 'title' => get_the_title($post->ID), 996 'subtitle' => get_the_date('F j, Y', $post->ID), 997 'description' => wp_trim_words(get_the_excerpt($post->ID), 20, '...'), 998 'link' => get_permalink($post->ID), 999 'image' => $featured_image ?: $this->get_placeholder_image(get_the_title($post->ID)), 1000 'post_type' => $post->post_type, 1001 'author' => get_the_author_meta('display_name', $post->post_author), 1002 'debug_thumbnail_id' => get_post_thumbnail_id($post->ID), // Debug info 1003 'debug_image_url' => $featured_image // Debug info 1004 ); 1005 1006 $card_data[] = $card_item; 1007 } 1008 1009 wp_send_json_success($card_data); 1010 } 1011 1012 /** 955 1013 * URL Analytics & Tracking. 956 1014 */ -
cardcrafter-data-grids/trunk/readme.txt
r3441692 r3441706 5 5 Tested up to: 6.9 6 6 Requires PHP: 7.4 7 Stable tag: 1.1 1.07 Stable tag: 1.12.0 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 10 10 11 Transform JSON data into beautiful, responsive card grids. Perfect for team directories, product showcases, and portfolio displays.11 Transform JSON data and WordPress posts into beautiful, responsive card grids. Perfect for team directories, product showcases, portfolio displays, and blog content. 12 12 13 13 == Description == … … 15 15 Don't take our word for it, try CardCrafter live. **[Full-featured demo](https://tastewp.com/plugins/cardcrafter-data-grids)** on a real WordPress site. No signup, no download, no risk. 16 16 17 **CardCrafter** is the #1 WordPress plugin for displaying data as beautiful card grids. Transform your WordPress posts, JSON data, and custom content into professional, responsive card layouts. No coding required. 17 **CardCrafter** is the #1 WordPress plugin for displaying data as beautiful card grids. Transform your **WordPress posts**, JSON data, and custom content into professional, responsive card layouts. No coding required. 18 19 🆕 **NEW in v1.12.0:** Native WordPress Posts integration! Display your blog posts, pages, or custom post types as stunning card grids with featured images, excerpts, and automatic formatting. 18 20 19 21 **Perfect for:** … … 38 40 39 41 * **🧱 Gutenberg Block:** Native WordPress block editor support with visual configuration. 42 * **📝 WordPress Posts Grid:** Transform your blog posts into beautiful card layouts with one click. 40 43 * **Instant Search & Sort:** Users can filter and sort cards instantly (Client-side). 41 44 * **Multiple Layouts:** Grid, Masonry, and List views to suit your content. … … 167 170 == Changelog == 168 171 172 = 1.12.0 = 173 * MAJOR: Native WordPress Posts integration - display blog posts as beautiful card grids 174 * NEW: "Use WP Posts" button in admin for one-click WordPress content integration 175 * NEW: Automatic featured image, title, excerpt, and permalink extraction from WordPress posts 176 * NEW: Live preview of WordPress posts with all display options (search, filters, pagination) 177 * IMPROVED: Enhanced caching system with automatic cache clearing for fresh data 178 * IMPROVED: Debug mode for troubleshooting image and thumbnail issues 179 * ACCESSIBILITY: WordPress posts automatically include proper alt text and semantic structure 180 * PERFORMANCE: Optimized queries with cache-busting for real-time preview updates 181 169 182 = 1.11.0 = 170 183 * MAJOR: Enhanced admin UI with modern design and comprehensive display options
Note: See TracChangeset
for help on using the changeset viewer.