{"id":324394,"date":"2026-06-16T09:15:47","date_gmt":"2026-06-16T09:15:47","guid":{"rendered":"https:\/\/pl.wordpress.org\/plugins\/kung-woo-price-history\/"},"modified":"2026-06-16T09:15:11","modified_gmt":"2026-06-16T09:15:11","slug":"kung-woo-price-history-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/kung-woo-price-history-for-woocommerce\/","author":23505639,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.8","stable_tag":"1.0.8","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Kung Woo Price History for WooCommerce","header_author":"kungwoopanda","header_description":"Displays price history (Omnibus Directive). WPCS compliant version with strict sanitization and enqueued scripts.","assets_banners_color":"6c747a","last_updated":"2026-06-16 09:15:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.8":{"tag":"1.0.8","author":"kungwoopanda","date":"2026-06-16 09:15:11"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3574254,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3574254,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3574254,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3574254,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3574254,"resolution":"1","location":"assets","locale":"","width":907,"height":548},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3574254,"resolution":"2","location":"assets","locale":"","width":1306,"height":578}},"screenshots":{"1":"The \"Lowest price from 30 days\" Omnibus notice on a product page.","2":"The interactive Price History chart modal."}},"plugin_section":[],"plugin_tags":[2510,209978,217117,4394,286],"plugin_category":[45],"plugin_contributors":[264650],"plugin_business_model":[],"class_list":["post-324394","plugin","type-plugin","status-publish","hentry","plugin_tags-chart","plugin_tags-omnibus","plugin_tags-price-history","plugin_tags-pricing","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-kungwoopanda","plugin_committers-kungwoopanda"],"banners":{"banner":"https:\/\/ps.w.org\/kung-woo-price-history-for-woocommerce\/assets\/banner-772x250.png?rev=3574254","banner_2x":"https:\/\/ps.w.org\/kung-woo-price-history-for-woocommerce\/assets\/banner-1544x500.png?rev=3574254","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kung-woo-price-history-for-woocommerce\/assets\/icon-128x128.png?rev=3574254","icon_2x":"https:\/\/ps.w.org\/kung-woo-price-history-for-woocommerce\/assets\/icon-256x256.png?rev=3574254","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kung-woo-price-history-for-woocommerce\/assets\/screenshot-1.png?rev=3574254","caption":"The \"Lowest price from 30 days\" Omnibus notice on a product page."},{"src":"https:\/\/ps.w.org\/kung-woo-price-history-for-woocommerce\/assets\/screenshot-2.png?rev=3574254","caption":"The interactive Price History chart modal."}],"raw_content":"<!--section=description-->\n<p><strong>Kung Woo Price History for WooCommerce<\/strong> is a lightweight WooCommerce extension that automatically tracks price changes and displays the lowest price from the last 30 days (complying with the EU Omnibus Directive).<\/p>\n\n<p>Additionally, it allows your customers to view the full product price history on a beautiful, interactive modal chart, and even export that chart as a PDF file.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Omnibus Compliance:<\/strong> Automatically calculates and displays the lowest product price from the last 30 days whenever a product is on sale.<\/li>\n<li><strong>Price Tracking:<\/strong> Silently records the product price every time it gets updated or saved in the WooCommerce backend.<\/li>\n<li><strong>Interactive Chart:<\/strong> Adds a sleek \"Price History\" button to single product pages (via hook or shortcode) that opens a modal with a responsive Chart.js line graph.<\/li>\n<li><strong>PDF Export:<\/strong> Allows customers to generate and download a PDF report of the price chart with one click.<\/li>\n<li><strong>Page Builder Friendly:<\/strong> Works flawlessly with Elementor and other page builders thanks to robust event delegation and global script enqueuing.<\/li>\n<li><strong>Strict Security &amp; Performance:<\/strong> Fully compliant with WordPress.org repository guidelines. No external CDN calls, strict data sanitization, English-only database keys, and properly enqueued scripts.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the entire plugin folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install it directly via the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>The plugin will immediately start tracking price changes for your products.<\/li>\n<li>When a product is put on sale, the \"Lowest price in 30 days\" notice will automatically appear.<\/li>\n<li>A \"Price History\" button will be added to your single product pages. You can also use the plugin's shortcode <code>[kwph_price_history]<\/code> to place the button anywhere on the product page or within your Elementor templates.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"when%20does%20the%20plugin%20record%20a%20new%20price%3F\"><h3>When does the plugin record a new price?<\/h3><\/dt>\n<dd><p>The plugin hooks into the WooCommerce product save action. Whenever you update a product and the price differs from the last recorded entry, it logs the new price along with today's date.<\/p><\/dd>\n<dt id=\"can%20i%20import%20historical%20data%3F\"><h3>Can I import historical data?<\/h3><\/dt>\n<dd><p>Currently, the plugin begins tracking prices from the moment it is installed and activated. It does not look back at past WooCommerce logs.<\/p><\/dd>\n<dt id=\"where%20is%20the%20omnibus%20notice%20displayed%3F\"><h3>Where is the Omnibus notice displayed?<\/h3><\/dt>\n<dd><p>The lowest price from the last 30 days is automatically displayed right under the product price summary, but only when the product is currently \"on sale\".<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Refactor: Standardized all database keys, options, and variables to English (e.g., <code>_kwph_price_history<\/code>) to meet WordPress.org global standards.<\/li>\n<li>Compatibility: Added full support for Elementor and other Page Builders by implementing global script enqueuing and JavaScript Event Delegation.<\/li>\n<li>Architecture: Shortcode buttons now securely carry specific product data via <code>data-chart<\/code> attributes, enabling multiple distinct charts to work flawlessly on the same page.<\/li>\n<li>Fix: Resolved a major Chart.js rendering issue (blank chart modal) by enforcing explicit canvas wrapper heights and applying rendering cycle delays.<\/li>\n<li>Fix: Added visual fallback error messages to gracefully handle missing core JavaScript assets.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Security: Implemented strict SVG sanitization using <code>wp_kses()<\/code> with an explicit allowlist for the settings page.<\/li>\n<li>Security: Improved late escaping across all plugin outputs.<\/li>\n<li>Architecture: Moved all inline JavaScript from footer directly to correctly enqueued external JS files using <code>wp_enqueue_script<\/code> and <code>wp_localize_script<\/code>.<\/li>\n<li>Architecture: Prefixed shortcodes (<code>[kwph_price_history]<\/code>) and global declarations to avoid naming collisions.<\/li>\n<li>Update: Updated Chart.js to the newest stable version.<\/li>\n<li>Fix: Removed remote CDN calls from the html2pdf library to ensure all assets are loaded locally.<\/li>\n<li>Compliance: Renamed plugin to respect third-party trademarks (\"for WooCommerce\").<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Track and display WooCommerce product price history on a beautiful interactive chart with PDF export. Fully Omnibus directive compliant.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/324394","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=324394"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kungwoopanda"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=324394"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=324394"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=324394"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=324394"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=324394"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=324394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}