{"id":90521,"date":"2018-09-17T11:45:21","date_gmt":"2018-09-17T11:45:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/amp-wp\/"},"modified":"2026-04-30T20:42:52","modified_gmt":"2026-04-30T20:42:52","slug":"amp-wp","status":"publish","type":"plugin","link":"https:\/\/br.wordpress.org\/plugins\/amp-wp\/","author":16258819,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.7.4","stable_tag":"1.7.4","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"AMP WP","header_author":"Mohsin Rafique, Pixelative","header_description":"Supporting everything in WordPress, it's the best Google AMP solution to date.","assets_banners_color":"f8d6d5","last_updated":"2026-04-30 20:42:52","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/wise.com\/pay\/me\/mohsinr301","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/amp-wp","header_author_uri":"https:\/\/mohsinrafique.com","rating":4.4,"author_block_rating":0,"active_installs":700,"downloads":78892,"num_ratings":56,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"pixelative","date":"2018-09-20 17:34:40"},"1.0.1":{"tag":"1.0.1","author":"pixelative","date":"2018-09-20 17:34:40"},"1.0.2":{"tag":"1.0.2","author":"pixelative","date":"2018-09-20 17:34:40"},"1.0.3":{"tag":"1.0.3","author":"pixelative","date":"2018-09-25 20:20:34"},"1.0.4":{"tag":"1.0.4","author":"pixelative","date":"2018-10-30 19:28:42"},"1.0.5":{"tag":"1.0.5","author":"pixelative","date":"2018-10-31 08:08:12"},"1.1.0":{"tag":"1.1.0","author":"pixelative","date":"2018-11-10 06:00:35"},"1.1.1":{"tag":"1.1.1","author":"pixelative","date":"2018-11-16 23:18:59"},"1.2.0":{"tag":"1.2.0","author":"pixelative","date":"2018-11-29 14:34:08"},"1.2.1":{"tag":"1.2.1","author":"pixelative","date":"2018-12-02 07:19:14"},"1.2.2":{"tag":"1.2.2","author":"pixelative","date":"2018-12-02 08:18:33"},"1.3.0":{"tag":"1.3.0","author":"pixelative","date":"2018-12-03 12:38:22"},"1.3.1":{"tag":"1.3.1","author":"pixelative","date":"2018-12-03 17:03:40"},"1.4.0":{"tag":"1.4.0","author":"pixelative","date":"2018-12-12 18:27:57"},"1.4.1":{"tag":"1.4.1","author":"pixelative","date":"2019-01-04 20:11:03"},"1.4.2":{"tag":"1.4.2","author":"pixelative","date":"2019-01-17 21:06:44"},"1.4.3":{"tag":"1.4.3","author":"pixelative","date":"2019-01-26 00:51:44"},"1.4.3.1":{"tag":"1.4.3.1","author":"pixelative","date":"2019-02-11 20:01:48"},"1.5.0":{"tag":"1.5.0","author":"pixelative","date":"2019-03-26 16:02:17"},"1.5.1":{"tag":"1.5.1","author":"pixelative","date":"2019-03-26 18:38:46"},"1.5.10":{"tag":"1.5.10","author":"pixelative","date":"2019-09-17 18:54:20"},"1.5.11":{"tag":"1.5.11","author":"pixelative","date":"2019-11-25 16:51:04"},"1.5.12":{"tag":"1.5.12","author":"pixelative","date":"2021-06-23 17:52:05"},"1.5.13":{"tag":"1.5.13","author":"pixelative","date":"2021-08-19 17:16:27"},"1.5.14":{"tag":"1.5.14","author":"pixelative","date":"2021-12-24 15:38:16"},"1.5.15":{"tag":"1.5.15","author":"mohsinrafique","date":"2023-07-09 21:36:03"},"1.5.16":{"tag":"1.5.16","author":"pixelative","date":"2024-05-02 21:34:49"},"1.5.17":{"tag":"1.5.17","author":"mohsinrafique","date":"2026-01-28 08:09:23"},"1.5.18":{"tag":"1.5.18","author":"mohsinrafique","date":"2026-01-28 08:09:23"},"1.5.19":{"tag":"1.5.19","author":"mohsinrafique","date":"2026-04-02 23:05:20"},"1.5.2":{"tag":"1.5.2","author":"pixelative","date":"2019-03-27 05:54:45"},"1.5.3":{"tag":"1.5.3","author":"pixelative","date":"2019-04-03 09:04:12"},"1.5.4":{"tag":"1.5.4","author":"pixelative","date":"2019-04-03 09:04:12"},"1.5.5":{"tag":"1.5.5","author":"pixelative","date":"2019-04-18 17:35:41"},"1.5.6":{"tag":"1.5.6","author":"pixelative","date":"2019-04-29 19:30:35"},"1.5.7":{"tag":"1.5.7","author":"pixelative","date":"2019-04-29 19:30:35"},"1.5.8":{"tag":"1.5.8","author":"pixelative","date":"2019-07-18 10:08:06"},"1.5.9":{"tag":"1.5.9","author":"pixelative","date":"2019-09-16 19:09:53"},"1.6.0":{"tag":"1.6.0","author":"mohsinrafique","date":"2026-04-14 21:11:15"},"1.7.0":{"tag":"1.7.0","author":"mohsinrafique","date":"2026-04-23 18:44:19"},"1.7.1":{"tag":"1.7.1","author":"mohsinrafique","date":"2026-04-25 19:54:14"},"1.7.2":{"tag":"1.7.2","author":"mohsinrafique","date":"2026-04-26 00:20:26"},"1.7.3":{"tag":"1.7.3","author":"mohsinrafique","date":"2026-04-30 11:10:18"},"1.7.4":{"tag":"1.7.4","author":"mohsinrafique","date":"2026-04-30 20:42:52"}},"upgrade_notice":{"1.7.4":"<p>Recommended for all users. The header and sidebar logo was silently stripped on every AMP page since v1.7.2 due to a PHPCS escaping regression. Update immediately if your logo is not appearing.<\/p>","1.7.3":"<p>Recommended for all users running any of these plugins alongside AMP WP:\n* Yoast SEO: meta description, Open Graph, and Twitter Card tags were silently missing on all AMP pages with Yoast v14 and above. Duplicate title and robots tags also fixed. A 300-second timeout on the AMP front page caused by an infinite callback loop is also resolved.\n* All In One SEO Pack: meta description, Open Graph, and Twitter Card tags were silently missing on all AMP pages with AIOSEO v4 and above. Homepage title sync also fixed.\n* WP-Optimize: HTML compression, Delay JS, and page caching all previously ran unchecked on AMP pages and could break or cache corrupted output. All three are now correctly disabled for AMP responses.\n* WP Fastest Cache: HTML minification, CSS minification, and comment removal all ran unconditionally on AMP pages. All are now correctly disabled.\n* OneSignal Web Push Notifications: the subscribe\/unsubscribe widget was never rendered on AMP pages due to a code bug. Now fixed.\n* wpForo Forum: AMP pages were incorrectly served on wpForo forum URLs on all wpForo 3.x installs. The detection bug is now fixed.<\/p>","1.7.2":"<p>Recommended for all users. Key fixes in this release:\n* AdSense Auto Ads: corrected head injection order so Auto Ads fire correctly on all AMP pages.\n* Font Awesome: upgraded from 4.7.0 to 6.7.2, eliminating browser console font warnings. No changes to your icons or templates required.\n* Google Analytics: GA4 Measurement IDs (G-XXXXXXXX) now use the correct AMP analytics tag. Fixes the console warning seen after migrating from Universal Analytics.\n* Structured Data: 11 JSON-LD \/ Schema.org issues resolved for better Google Rich Results compliance.<\/p>","1.7.1":"<p>Recommended if you use ACF or other plugins that ship Select2, fixes admin CSS conflicts. Also fixes a UX bug where the &quot;Add Comment&quot; button was hidden on posts with zero comments.<\/p>","1.6.0":"<p>Recommended for all users. Adds Instagram Reels and IGTV support, improves AMP iframe handling and layout detection, fixes PHP 8 compatibility issues, updates JSON-LD structured data to current Schema.org standards, and removes two retired AMP components.<\/p>","1.5.19":"<p>Recommended for PHP 8.4 users. Resolves a deprecated return-type warning in the HTML utility class.<\/p>","1.5.10":"<p>Important fix for sites using the &quot;AMP URL at end&quot; format, which resolves a self-canonical AMP URL issue.<\/p>"},"ratings":{"1":6,"2":1,"3":1,"4":3,"5":45},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2552940,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2552940,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":1946984,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":1946984,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.1.0","1.1.1","1.2.0","1.2.1","1.2.2","1.3.0","1.3.1","1.4.0","1.4.1","1.4.2","1.4.3","1.4.3.1","1.5.0","1.5.1","1.5.10","1.5.11","1.5.12","1.5.13","1.5.14","1.5.15","1.5.16","1.5.17","1.5.18","1.5.19","1.5.2","1.5.3","1.5.4","1.5.5","1.5.6","1.5.7","1.5.8","1.5.9","1.6.0","1.7.0","1.7.1","1.7.2","1.7.3","1.7.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":1946984,"resolution":"1","location":"assets","locale":""},"screenshot-10.png":{"filename":"screenshot-10.png","revision":1946984,"resolution":"10","location":"assets","locale":""},"screenshot-11.png":{"filename":"screenshot-11.png","revision":1946984,"resolution":"11","location":"assets","locale":""},"screenshot-12.png":{"filename":"screenshot-12.png","revision":1946984,"resolution":"12","location":"assets","locale":""},"screenshot-13.png":{"filename":"screenshot-13.png","revision":1984423,"resolution":"13","location":"assets","locale":""},"screenshot-14.png":{"filename":"screenshot-14.png","revision":1993056,"resolution":"14","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":1946984,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":1946984,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":1946984,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":1946984,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":1993056,"resolution":"6","location":"assets","locale":""},"screenshot-7.png":{"filename":"screenshot-7.png","revision":1946984,"resolution":"7","location":"assets","locale":""},"screenshot-8.png":{"filename":"screenshot-8.png","revision":1946984,"resolution":"8","location":"assets","locale":""},"screenshot-9.png":{"filename":"screenshot-9.png","revision":1946984,"resolution":"9","location":"assets","locale":""}},"screenshots":{"1":"Home Page","2":"Single Post Page","3":"Tags, Social Icons, Related Posts, Comments, and Footer","4":"Search &amp; Archive Page","5":"100% Valid AMP Content","6":"AMP WP Options Panel","7":"AMP Auto Ads Support","8":"Compatible with Major Cache Plugins","9":"Embed Images, Videos, Audios &amp; iFrames","10":"Toggle Search &amp; Header","11":"Recent Comments","12":"Sidebar, Social Icons &amp; Related Posts","13":"Core WordPress Customizer Integration","14":"AMP WP Settings Panel"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1881,1882,1884,841,5896],"plugin_category":[],"plugin_contributors":[148927,161913],"plugin_business_model":[],"class_list":["post-90521","plugin","type-plugin","status-publish","hentry","plugin_tags-accelerated-mobile-pages","plugin_tags-amp","plugin_tags-google-amp","plugin_tags-mobile","plugin_tags-page-speed","plugin_contributors-mohsinrafique","plugin_contributors-pixelative","plugin_committers-mohsinrafique","plugin_committers-pixelative","plugin_support_reps-pixelative"],"banners":{"banner":"https:\/\/ps.w.org\/amp-wp\/assets\/banner-772x250.png?rev=1946984","banner_2x":"https:\/\/ps.w.org\/amp-wp\/assets\/banner-1544x500.png?rev=1946984","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/amp-wp\/assets\/icon-128x128.png?rev=2552940","icon_2x":"https:\/\/ps.w.org\/amp-wp\/assets\/icon-256x256.png?rev=2552940","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-1.png?rev=1946984","caption":"Home Page"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-2.png?rev=1946984","caption":"Single Post Page"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-3.png?rev=1946984","caption":"Tags, Social Icons, Related Posts, Comments, and Footer"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-4.png?rev=1946984","caption":"Search &amp; Archive Page"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-5.png?rev=1946984","caption":"100% Valid AMP Content"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-6.png?rev=1993056","caption":"AMP WP Options Panel"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-7.png?rev=1946984","caption":"AMP Auto Ads Support"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-8.png?rev=1946984","caption":"Compatible with Major Cache Plugins"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-9.png?rev=1946984","caption":"Embed Images, Videos, Audios &amp; iFrames"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-10.png?rev=1946984","caption":"Toggle Search &amp; Header"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-11.png?rev=1946984","caption":"Recent Comments"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-12.png?rev=1946984","caption":"Sidebar, Social Icons &amp; Related Posts"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-13.png?rev=1984423","caption":"Core WordPress Customizer Integration"},{"src":"https:\/\/ps.w.org\/amp-wp\/assets\/screenshot-14.png?rev=1993056","caption":"AMP WP Settings Panel"}],"raw_content":"<!--section=description-->\n<p><strong>AMP WP<\/strong> is the most feature-rich, developer-friendly, and beginner-ready Google AMP plugin available for WordPress, completely free.<\/p>\n\n<p>Originally built by <strong><a href=\"https:\/\/pixelative.co\">Pixelative<\/a><\/strong>, a professional web development agency, AMP WP is now independently developed and maintained by <strong><a href=\"https:\/\/mohsinrafique.com\">Mohsin Rafique<\/a><\/strong>, the lead engineer behind the plugin since its inception. AMP WP has helped thousands of website owners dramatically improve mobile page speed, search rankings, and user experience.<\/p>\n\n<p><a href=\"https:\/\/pixelspress.com\/amp\">Online Demo<\/a> | <a href=\"https:\/\/1c8979da.sibforms.com\/serve\/MUIFAPfaW_zG5aVJNBG78I1qIu30utV8kT5_ERiosqVMstRk9Nj1o6RVbEbyaJkvyZ9TQ3b79YDkpPjsyd99NmbxAlNtZQrx9TkcFAF3V6DvgcoiCcnaZkgvPxl_OpctNUzI-G7xDKxwMq2d2Cm2RteW4LoOxEi-XMmdvhfCiMDxfBsOx18Pd9U1xsTcOqIdyT9WccheL83rrsCeeQ==\">CF7 Premium Extension<\/a> | <a href=\"mailto:mohsin.rafique@gmail.com\">Support<\/a><\/p>\n\n\n\n<h3>Why AMP WP?<\/h3>\n\n<p>Google's Accelerated Mobile Pages (AMP) technology delivers pages up to <strong>5x faster<\/strong> on mobile devices. Faster pages mean lower bounce rates, higher engagement, and better rankings in Google Search. AMP WP makes enabling AMP on your WordPress site effortless, from a single settings panel with no theme modifications needed.<\/p>\n\n\n\n<h3>Free Features<\/h3>\n\n<p><strong>Performance &amp; Compatibility<\/strong>\n* Full Google AMP specification compliance (100% valid AMP output)\n* PHP 8.x compatible (tested through PHP 8.4)\n* Compatible with all major caching plugins (WP Rocket, SG Optimizer, W3 Total Cache, and more)\n* Compatible with Jetpack\n* Compatible with Yoast SEO (100%)\n* Compatible with \"Automattic AMP\" plugin\n* Gutenberg block editor support\n* RTL language support (100%)\n* GDPR compliant<\/p>\n\n<p><strong>Content &amp; Embeds<\/strong>\n* Automatic AMP conversion for Posts, Pages, and Custom Post Types\n* Embed Images, Videos, Audios, and iFrames: YouTube, Vimeo, Twitter, Facebook, SoundCloud, Instagram (Posts, Reels &amp; TV)\n* Lightbox for Images\n* Slider Support\n* Internal AMP Linking\n* Native AMP Search<\/p>\n\n<p><strong>Design &amp; Customization<\/strong>\n* Two listing layouts: Classic View and List View\n* Customizable color scheme\n* Custom CSS options\n* Sticky Header\n* AMP WordPress Navigation Menu\n* Custom AMP Front Page\n* Social Icons<\/p>\n\n<p><strong>Control<\/strong>\n* Show\/Hide AMP for individual Posts, Pages, and Custom Post Types\n* Show\/Hide AMP for Taxonomies (Categories, Tags, Custom)\n* Show\/Hide AMP mobile redirections\n* Show\/Hide AMP on Search pages\n* Show\/Hide Date, Author, and Thumbnail across Archive, Single Post, Related Posts, and Slider\n* Show\/Hide Tags on Single Post pages\n* Enable\/Disable Structured Data (JSON-LD Schema)<\/p>\n\n<p><strong>Engagement &amp; Analytics<\/strong>\n* Related Posts (with thumbnail, date, and author controls)\n* Recent Comments\n* Notice Bar\n* Sidebar\n* Social Sharing Buttons\n* OneSignal Push Notifications integration\n* Third-party analytics support: Google Analytics, Facebook Pixel, Segment, Quantcast, Alexa Metrics, Chartbeat, comScore, Yandex Metrica, AFS Analytics, Adobe Analytics<\/p>\n\n<p><strong>Ads<\/strong>\n* Google AdSense Auto Ads for AMP support<\/p>\n\n<p><strong>Multilingual<\/strong>\n* Translation Panel included\n* Contact us at <code>mohsin.rafique@gmail.com<\/code> to contribute translations<\/p>\n\n\n\n<h3>Maintained by Mohsin Rafique<\/h3>\n\n<p>AMP WP was originally created by <strong><a href=\"https:\/\/pixelative.co\">Pixelative<\/a><\/strong>, a full-service digital agency specializing in high-performance WordPress solutions, and remains under Pixelative's ownership. The plugin is currently developed, updated, and supported independently by <strong>Mohsin Rafique<\/strong>, a seasoned WordPress engineer with deep expertise in AMP specification compliance, PHP performance, and modern web standards.<\/p>\n\n<p>For support, custom AMP theme development, or white-label licensing, contact <strong>Mohsin Rafique<\/strong> at <a href=\"https:\/\/mohsinrafique.com\">mohsinrafique.com<\/a> or <a href=\"mailto:mohsin.rafique@gmail.com\">mohsin.rafique@gmail.com<\/a>.<\/p>\n\n\n\n<h4>Credits<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/wppb.me\/\">WordPress Plugin Boilerplate Generator<\/a> by Tom McFarlin, License: GPLv2<\/li>\n<li><a href=\"http:\/\/necolas.github.io\/normalize.css\/\">normalize.css<\/a>, License: MIT<\/li>\n<li><a href=\"https:\/\/fonts.google.com\/specimen\/Karla\">Karla<\/a> by Jonathan Pinhorn, License: SIL OFL<\/li>\n<li><a href=\"https:\/\/fonts.google.com\/specimen\/Noto+Sans\">Noto Sans<\/a> by Google, License: SIL OFL<\/li>\n<li><a href=\"https:\/\/fonts.google.com\/specimen\/Overpass+Mono\">Overpass Mono<\/a> by Delve Withrington, License: SIL OFL<\/li>\n<li><a href=\"https:\/\/fontawesome.com\/license\">Font Awesome Free 6.7.2<\/a> by Fonticons, Inc., Font: SIL OFL 1.1 \/ Code: MIT<\/li>\n<\/ul>\n\n<h3>Minimum Requirements<\/h3>\n\n<ul>\n<li>WordPress 5.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>MySQL 8.0+ or MariaDB 10.5+<\/li>\n<\/ul>\n\n<p><strong>Tip:<\/strong> Install <a href=\"https:\/\/wordpress.org\/plugins\/regenerate-thumbnails\/\">Regenerate Thumbnails<\/a> and regenerate your thumbnails after activation to ensure the post listing layout renders correctly.<\/p>\n\n<h3>Automatic Installation (Recommended)<\/h3>\n\n<ol>\n<li>Log in to your WordPress admin panel.<\/li>\n<li>Navigate to <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Search for <strong>AMP WP<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Go to <strong>AMP WP \u2192 Customize AMP<\/strong> to configure your settings.<\/li>\n<\/ol>\n\n<h3>Manual Installation<\/h3>\n\n<ol>\n<li>Download the plugin ZIP from the WordPress plugin repository.<\/li>\n<li>Extract the ZIP and upload the <code>amp-wp<\/code> folder to <code>\/wp-content\/plugins\/<\/code> via FTP or your hosting file manager.<\/li>\n<li>Activate the plugin from <strong>Plugins<\/strong> in your WordPress admin panel.<\/li>\n<li>Navigate to <strong>AMP WP \u2192 Customize AMP<\/strong> to begin setup.<\/li>\n<\/ol>\n\n<h3>Developer Hooks<\/h3>\n\n<p>AMP WP exposes WordPress-standard actions and filters throughout its template system, URL generator, structured data engine, and admin panel. All hooks listed here are safe to use in a child theme's <code>functions.php<\/code> or in a standalone plugin. No plugin file edits are needed.<\/p>\n\n<h4>Template Actions<\/h4>\n\n<p>These actions fire inside AMP WP's own template system. They do not use <code>wp_head<\/code> or <code>wp_footer<\/code>. Output must be valid AMP markup.<\/p>\n\n<p><strong><code>amp_wp_template_head<\/code><\/strong>\nFires inside the AMP <code>&lt;head&gt;<\/code> element. Use for custom meta tags or other head markup. AMP WP reserves priority 0 for component scripts.<\/p>\n\n<p><strong><code>amp_wp_template_head_deferred<\/code><\/strong>\nFires in <code>&lt;head&gt;<\/code> after the AMP boilerplate styles have been written. Required injection point for <code>&lt;amp-auto-ads&gt;<\/code> and any snippet that must follow the boilerplate. AMP WP's own styles and scripts output here.<\/p>\n\n<p><strong><code>amp_wp_template_body_start<\/code><\/strong>\nFires immediately after the opening <code>&lt;body&gt;<\/code> tag.<\/p>\n\n<p><strong><code>amp_wp_body_beginning<\/code><\/strong>\nFires at the start of visible body content, before the site header renders.<\/p>\n\n<p><strong><code>amp_wp_post_content_below<\/code><\/strong>\nFires directly below the post content on single post pages.<\/p>\n\n<p><strong><code>amp_wp_template_footer<\/code><\/strong>\nFires before the closing <code>&lt;\/body&gt;<\/code> tag. Priority 999 is reserved for AMP WP's output sanitizer.<\/p>\n\n<p><strong><code>amp_wp_template_enqueue_scripts<\/code><\/strong>\nUse to register additional AMP component scripts. Call <code>amp_wp_enqueue_script( $handle, $src )<\/code> inside your callback.<\/p>\n\n<p><strong><code>amp_wp_after_comment_list<\/code><\/strong>\nFires after the comment list on single post pages.<\/p>\n\n<p><strong><code>amp_wp_notifications_bar<\/code><\/strong>\nFires inside the notification\/notice bar template slot.<\/p>\n\n<p><strong><code>amp_wp_gdpr_compliance<\/code><\/strong>\nFires inside the GDPR banner template slot.<\/p>\n\n<h4>Analytics Actions<\/h4>\n\n<p>These actions fire in the AMP page footer. Each corresponds to one analytics provider already supported by AMP WP. Hook into any of them to append a custom <code>&lt;amp-analytics&gt;<\/code> block for a provider not yet built in, or to modify the existing output before it renders.<\/p>\n\n<ul>\n<li><code>amp_wp_analytics_ga<\/code> (Google Analytics)<\/li>\n<li><code>amp_wp_analytics_fbp<\/code> (Facebook Pixel)<\/li>\n<li><code>amp_wp_analytics_sa<\/code> (Simple Analytics)<\/li>\n<li><code>amp_wp_analytics_qc<\/code> (Quantcast)<\/li>\n<li><code>amp_wp_analytics_acm<\/code> (Adobe Campaign Manager)<\/li>\n<li><code>amp_wp_analytics_cb<\/code> (Chartbeat)<\/li>\n<li><code>amp_wp_analytics_comscore<\/code> (comScore)<\/li>\n<li><code>amp_wp_analytics_yandex_metrica<\/code> (Yandex Metrica)<\/li>\n<li><code>amp_wp_analytics_afs<\/code> (AFS Analytics)<\/li>\n<li><code>amp_wp_analytics_adobe<\/code> (Adobe Analytics)<\/li>\n<\/ul>\n\n<h4>AMP Version Control Filters<\/h4>\n\n<p><strong><code>amp_wp_amp_version_exists<\/code><\/strong>\nControl whether an AMP version is served for the current request. Return <code>false<\/code> to disable AMP for that page.\nParameter: <code>(bool) $exists<\/code><\/p>\n\n<pre><code>add_filter( 'amp_wp_amp_version_exists', '__return_false' );\n<\/code><\/pre>\n\n<p><strong><code>amp_wp_template_auto_redirect<\/code><\/strong>\nEnable automatic redirection of all visitors from the non-AMP URL to the AMP URL. Default <code>false<\/code>.\nParameter: <code>(bool) $redirect<\/code><\/p>\n\n<p><strong><code>amp_wp_filter_config_list<\/code><\/strong>\nExtend the list of post types, taxonomies, and conditions where AMP is disabled site-wide.\nParameter: <code>(array) $filters<\/code><\/p>\n\n<h4>URL and Permalink Filters<\/h4>\n\n<p><strong><code>amp_wp_pre_get_permalink<\/code><\/strong>\nShort-circuit AMP permalink generation. Return any non-false value to bypass the core URL builder.\nParameters: <code>(mixed) $pre<\/code> (default false), <code>(int) $post_id<\/code><\/p>\n\n<p><strong><code>amp_wp_get_permalink<\/code><\/strong>\nFilter the final AMP URL after it has been built.\nParameters: <code>(string) $amp_url<\/code>, <code>(int) $post_id<\/code><\/p>\n\n<p><strong><code>amp_wp_url_format_filter<\/code><\/strong>\nChange the AMP URL format. Accepted values: <code>start-point<\/code> (prefix, e.g. <code>\/amp\/slug<\/code>) or <code>end-point<\/code> (suffix, e.g. <code>\/slug\/amp<\/code>).\nParameter: <code>(string) $format<\/code><\/p>\n\n<p><strong><code>amp_wp_url_excluded<\/code><\/strong>\nAdd URL paths that must never serve an AMP version.\nParameter: <code>(array) $excluded_urls<\/code><\/p>\n\n<p><strong><code>amp_wp_transformer_exclude_subdir<\/code><\/strong>\nAdd path segments that the AMP URL transformer should skip when rewriting internal links. Used internally by AMP WP for WPML and Polylang language prefixes.\nParameter: <code>(array) $exclude_dirs<\/code><\/p>\n\n<h4>Structured Data Filters (JSON-LD)<\/h4>\n\n<p>All JSON-LD filters are active only when \"Enable Structured Data on Site\" is on in AMP WP Settings. The three schema-data filters carry a trailing underscore. This is generated internally via <code>sprintf( 'amp_wp_json_ld_%s_', $type )<\/code> and the underscore must be part of the hook name you register.<\/p>\n\n<p><strong><code>amp_wp_json_ld_config<\/code><\/strong>\nFilters the generator configuration before any schema is built.<\/p>\n\n<p>Parameter: <code>(array) $config<\/code> with keys:\n* <code>active<\/code> (bool): set <code>false<\/code> to disable the entire JSON-LD generator for the current request.\n* <code>logo<\/code> (string): Organization logo URL. When non-empty, an <code>Organization<\/code> block is emitted on every page and all Article-type schemas reference it by <code>@id<\/code>.\n* <code>posts_type<\/code> (string): Fallback schema type when <code>schema_type_for_post<\/code> is empty. Default <code>BlogPosting<\/code>.\n* <code>media_field_id<\/code> (string): Post meta key for audio\/video URL in format posts. Default <code>_featured_embed_code<\/code>.<\/p>\n\n<p>AMP WP core attaches at priority 15 to inject the branding logo. Use priority 20 or higher to override it.<\/p>\n\n<pre><code>add_filter( 'amp_wp_json_ld_config', function( $config ) { ... }, 20 );\n<\/code><\/pre>\n\n<p><strong><code>amp_wp_json_ld_organization_<\/code><\/strong>\nFilters the <code>Organization<\/code> schema array before output. Fires only when a logo is configured. Return <code>false<\/code> or an empty array to suppress the block.\nParameter: <code>(array) $data<\/code><\/p>\n\n<pre><code>add_filter( 'amp_wp_json_ld_organization_', function( $data ) { ... } );\n<\/code><\/pre>\n\n<p><strong><code>amp_wp_json_ld_website_<\/code><\/strong>\nFilters the <code>WebSite<\/code> schema array before output. Fires only on the homepage and front page.\nParameter: <code>(array) $data<\/code><\/p>\n\n<pre><code>add_filter( 'amp_wp_json_ld_website_', function( $data ) { ... } );\n<\/code><\/pre>\n\n<p><strong><code>amp_wp_json_ld_single_<\/code><\/strong>\nFilters the singular-content schema array before output. Fires on all singular pages: standard posts (Article, NewsArticle, BlogPosting), static pages (WebPage), WooCommerce products (Product), post format overrides (AudioObject, VideoObject, ImageObject), and custom post types.\nParameter: <code>(array) $data<\/code><\/p>\n\n<pre><code>add_filter( 'amp_wp_json_ld_single_', function( $data ) { ... } );\n<\/code><\/pre>\n\n<h4>Content and Theme Filters<\/h4>\n\n<p><strong><code>amp_wp_template_page_on_front<\/code><\/strong>\nSpecify the page ID to use as the AMP front page when a static homepage is configured.\nParameter: <code>(int) $page_id<\/code>, default 0.<\/p>\n\n<p><strong><code>amp_wp_template_show_on_front<\/code><\/strong>\nControl what displays on the AMP homepage. Accepted values: <code>posts<\/code> or <code>page<\/code>.\nParameter: <code>(string) $show_on_front<\/code><\/p>\n\n<p><strong><code>amp_wp_template_active_template<\/code><\/strong>\nOverride the active template metadata array.\nParameter: <code>(array) $template_info<\/code><\/p>\n\n<p><strong><code>amp_wp_template_set_menu_walker<\/code><\/strong>\nEnable or disable the custom sidebar menu walker for a specific nav menu location.\nParameters: <code>(bool) $use_walker<\/code>, <code>(array) $args<\/code><\/p>\n\n<p><strong><code>amp-wp-template-default-theme-mod<\/code><\/strong>\nSet default values for AMP WP Customizer options.\nParameters: <code>(mixed) $default_value<\/code>, <code>(string) $option_key<\/code><\/p>\n\n<p><strong><code>amp_wp_home_featured<\/code><\/strong>\nCustomize the <code>WP_Query<\/code> arguments used to fetch posts for the homepage featured slider.\nParameter: <code>(array) $query_args<\/code><\/p>\n\n<p><strong><code>amp_wp_get_template<\/code><\/strong>\nOverride the file path used to locate a template part.\nParameters: <code>(string) $located<\/code>, <code>(string) $file<\/code>, <code>(array) $args<\/code>, <code>(string) $template_path<\/code>, <code>(string) $default_path<\/code><\/p>\n\n<p><strong><code>amp_wp_html_dom_filter_attributes<\/code><\/strong>\nFilter an HTML element's attributes during the DOM processing pipeline.\nParameters: <code>(array) $attributes<\/code>, <code>(string) $tag_name<\/code>, <code>(array) $valid_attributes<\/code><\/p>\n\n<p><strong><code>amp_wp_style_files_{$file}<\/code><\/strong>\nFilter CSS file content before it is added to the inline <code>&lt;style amp-custom&gt;<\/code> block. <code>{$file}<\/code> is the stylesheet handle.\nParameter: <code>(string) $css<\/code><\/p>\n\n<p><strong><code>amp_wp_social_share_cache_time<\/code><\/strong>\nSet the cache duration in seconds for social share counts. Default 7200 (120 minutes).\nParameters: <code>(int) $seconds<\/code>, <code>(int) $post_id<\/code><\/p>\n\n<p><strong><code>amp_wp_social_share_count<\/code><\/strong>\nFilter social share count results after they are fetched.\nParameter: <code>(array) $results<\/code><\/p>\n\n<p><strong><code>amp_wp_gdpr_country_list<\/code><\/strong>\nCustomize the list of countries considered GDPR-compliant.\nParameter: <code>(array) $countries<\/code><\/p>\n\n<p><strong><code>amp_wp_translation_std<\/code><\/strong>\nProvide or override fallback translation strings.\nParameter: <code>(array) $translations<\/code><\/p>\n\n<h4>Admin and Settings Hooks<\/h4>\n\n<p><strong><code>amp_wp_settings_tab_menus<\/code><\/strong> (filter)\nAdd a custom tab to the AMP WP settings panel. Key is the tab slug, value is the tab label HTML.\nParameter: <code>(array) $tabs<\/code><\/p>\n\n<pre><code>add_filter( 'amp_wp_settings_tab_menus', function( $tabs ) { $tabs['my-tab'] = '&lt;span&gt;My Tab&lt;\/span&gt;'; return $tabs; } );\n<\/code><\/pre>\n\n<p><strong><code>amp_wp_settings_tab_section<\/code><\/strong> (action)\nRender the HTML content for your custom settings tab. Check <code>$_GET['tab']<\/code> to target a specific tab.<\/p>\n\n<p><strong><code>amp_wp_save_setting_sections<\/code><\/strong> (action)\nFires when the settings form is submitted. Hook here to read and save data for a custom tab.<\/p>\n\n<p><strong><code>amp_wp_save_setting_notice<\/code><\/strong> (filter)\nCustomize the \"Settings saved.\" notice text.\nParameter: <code>(string) $notice_text<\/code><\/p>\n\n<p><strong><code>amp_wp_welcome_tab_menus<\/code><\/strong> (filter)\nAdd a custom tab to the AMP WP welcome\/dashboard page.\nParameter: <code>(array) $tabs<\/code><\/p>\n\n<p><strong><code>amp_wp_welcome_tab_section<\/code><\/strong> (action)\nRender HTML content for a custom welcome page tab.<\/p>\n\n<p><strong><code>amp_wp_default_configurations<\/code><\/strong> (action)\nFires on plugin activation. Hook here to set default options for add-on plugins.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20the%20url%20structure%20for%20amp%20pages%3F\"><h3>What is the URL structure for AMP pages?<\/h3><\/dt>\n<dd><p>AMP WP supports two URL formats:<\/p>\n\n<ol>\n<li><strong>Prefix format:<\/strong> <code>https:\/\/yoursite.com\/amp\/page-name<\/code><\/li>\n<li><strong>Suffix format:<\/strong> <code>https:\/\/yoursite.com\/page-name\/amp<\/code><\/li>\n<\/ol>\n\n<p>You can choose your preferred format from <strong>AMP WP \u2192 Settings \u2192 General<\/strong>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20analytics%20tracking%3F\"><h3>How do I add analytics tracking?<\/h3><\/dt>\n<dd><p>Go to <strong>AMP WP \u2192 Settings \u2192 Analytics<\/strong> in your WordPress admin dashboard. AMP WP supports Google Analytics, Facebook Pixel, Segment, Quantcast, Alexa Metrics, Chartbeat, comScore, Yandex Metrica, AFS Analytics, and Adobe Analytics.<\/p><\/dd>\n<dt id=\"the%20post%20listing%20layout%20looks%20broken%3A%20how%20do%20i%20fix%20it%3F\"><h3>The post listing layout looks broken: how do I fix it?<\/h3><\/dt>\n<dd><p>This is usually caused by inconsistent thumbnail sizes. Install and run <a href=\"https:\/\/wordpress.org\/plugins\/regenerate-thumbnails\/\">Regenerate Thumbnails<\/a> to normalize all image sizes.<\/p><\/dd>\n<dt id=\"does%20amp%20wp%20support%20instagram%20reels%20and%20tv%20posts%3F\"><h3>Does AMP WP support Instagram Reels and TV posts?<\/h3><\/dt>\n<dd><p>Yes. Since version 1.6.0, AMP WP supports Instagram <code>\/p\/<\/code>, <code>\/reel\/<\/code>, and <code>\/tv\/<\/code> post types natively via <code>amp-instagram<\/code>.<\/p><\/dd>\n<dt id=\"what%20prebuilt%20listing%20layouts%20are%20available%3F\"><h3>What prebuilt listing layouts are available?<\/h3><\/dt>\n<dd><p>Two layouts are included: <strong>Classic View<\/strong> and <strong>List View<\/strong>. Switch between them from <strong>AMP WP \u2192 Options Panel<\/strong>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20inject%20custom%20html%20%28e.g.%2C%20ad%20codes%2C%20analytics%20snippets%29%3F\"><h3>How do I inject custom HTML (e.g., ad codes, analytics snippets)?<\/h3><\/dt>\n<dd><p>Go to <strong>Dashboard \u2192 AMP WP \u2192 Customize AMP<\/strong>. You can inject valid AMP snippets:\n* Between <code>&lt;head&gt;&lt;\/head&gt;<\/code> tags\n* Right after the <code>&lt;body&gt;<\/code> opening tag\n* Right before the <code>&lt;\/body&gt;<\/code> closing tag<\/p>\n\n<p>Only valid, AMP-compatible code will function on AMP pages.<\/p><\/dd>\n<dt id=\"how%20do%20i%20enable%20adsense%20auto%20ads%20for%20amp%3F\"><h3>How do I enable AdSense Auto Ads for AMP?<\/h3><\/dt>\n<dd><p>Navigate to <strong>Dashboard \u2192 AMP WP \u2192 Customize AMP<\/strong>. Paste your Auto Ads code in the <code>&lt;head&gt;<\/code> and right after <code>&lt;body&gt;<\/code> fields.<\/p>\n\n<p><a href=\"https:\/\/support.google.com\/adsense\/answer\/9011465\">AdSense Auto Ads for AMP \u2013 Google Help<\/a><\/p><\/dd>\n<dt id=\"how%20do%20i%20enable%20or%20disable%20amp%20for%20a%20specific%20post%3F\"><h3>How do I enable or disable AMP for a specific post?<\/h3><\/dt>\n<dd><p>Edit the post in WordPress, scroll to the <strong>AMP WP<\/strong> meta box in the sidebar, and toggle the AMP option on or off for that individual post.<\/p><\/dd>\n<dt id=\"how%20do%20i%20report%20a%20bug%20or%20request%20a%20feature%3F\"><h3>How do I report a bug or request a feature?<\/h3><\/dt>\n<dd><p>Please email <code>mohsin.rafique@gmail.com<\/code> or open a thread on the <a href=\"https:\/\/wordpress.org\/support\/plugin\/amp-wp\/\">WordPress support forum<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.4 \u2013 2026-05-01<\/h4>\n\n<ul>\n<li>Fixed: Header and sidebar logo image no longer disappears when a logo is set in AMP WP branding settings. The v1.7.2 PHPCS escaping pass wrapped the logo output in <code>wp_kses_post()<\/code>, which strips non-standard HTML elements including <code>&lt;amp-img&gt;<\/code> and <code>&lt;amp-anim&gt;<\/code>. The logo tag was silently removed on every page load, leaving an empty link in the header. A dedicated <code>amp_wp_kses_amp_img()<\/code> helper now sanitizes logo output using <code>wp_kses()<\/code> with <code>amp-img<\/code> and <code>amp-anim<\/code> added to the allowed-tag list, preserving <code>src<\/code>, <code>width<\/code>, <code>height<\/code>, <code>class<\/code>, <code>alt<\/code>, <code>sizes<\/code>, <code>layout<\/code>, and <code>on<\/code> attributes.<\/li>\n<li>Improved: AMP WP meta box in the post\/page editor sidebar rebuilt with a professional toggle switch UI. The meta box is now pinned to the top of the sidebar panel (priority high), the reorder controls are hidden, the panel heading inherits WordPress default weight to match Categories and Tags, and the Disable AMP control uses a pure-CSS toggle with a red active state and an AMP WP Settings shortcut link in the footer.<\/li>\n<li>Fixed: Notice Bar and GDPR Compliance no longer silently fail to appear on AMP pages. Both save functions stored the enabled switch as integer <code>1<\/code> while the frontend callbacks checked for string <code>'1'<\/code> with strict <code>===<\/code> comparison, causing the condition to always evaluate false and neither component to render regardless of the saved setting.<\/li>\n<li>Fixed: Notice Bar settings form was missing nonce verification in the save handler, allowing settings to be written without a valid nonce. The form nonce field is now aligned with the shared <code>amp_wp_settings_nonce<\/code> token used across all settings tabs, and the save function validates it before processing POST data.<\/li>\n<li>Fixed: Notice Bar accept button text field incorrectly fell back to an empty <code>array()<\/code> instead of an empty string when no value was saved, causing a type mismatch when the value was passed to <code>esc_attr()<\/code>.<\/li>\n<li>Fixed: GDPR <code>wp_dropdown_pages()<\/code> arguments <code>show_option_no_change<\/code> and <code>option_none_value<\/code> were explicitly set to <code>null<\/code>, overriding WordPress defaults and generating PHP 8 type deprecation warnings. Both are now set to empty strings.<\/li>\n<li>Fixed: GDPR consent form accept and reject actions no longer silently fail to redirect after submission. Both <code>AMP-Access-Control-Allow-Source-Origin<\/code> and <code>AMP-Redirect-To<\/code> response headers had a trailing space appended to their values, causing header parsing failures in the AMP runtime.<\/li>\n<li>Fixed: \"Privacy Settings\" re-open button label in the GDPR post-consent UI was a hardcoded English string. It is now wrapped with <code>__()<\/code> and translatable.<\/li>\n<\/ul>\n\n<h4>1.7.3 \u2013 2026-04-30<\/h4>\n\n<ul>\n<li>Fixed: Yoast SEO integration now works correctly on all modern Yoast SEO versions (v14 and above). The previous guard checked for WPSEO_OpenGraph, a class removed in Yoast v14 (2020), causing meta description, Open Graph, and Twitter Card tags to be silently omitted from every AMP page on any current Yoast install. The guard now detects both modern (YoastSEO()) and legacy (WPSEO_OpenGraph) APIs.<\/li>\n<li>Fixed: Meta description, Open Graph, and Twitter Card tags are now output on AMP pages for Yoast SEO v14+ using the wpseo_head presenter pipeline, replacing the deprecated WPSEO_Frontend, WPSEO_Twitter, and wpseo_opengraph APIs which were removed in Yoast v14.<\/li>\n<li>Fixed: AMP pages no longer output a duplicate title or robots meta tag when Yoast SEO is active. The new presenter filter strips Title, Robots, Canonical, Rel-Prev, and Rel-Next presenters since AMP WP manages those independently.<\/li>\n<li>Fixed: Homepage title sync with Yoast SEO now works on AMP front pages with Yoast v14+ using YoastSEO()-&gt;meta-&gt;for_post(). Previously the function fell through silently on modern Yoast because the WPSEO_Frontend::get_instance() guard evaluated to false.<\/li>\n<li>Fixed: AMP front page no longer times out when Yoast SEO is active. The new homepage title code called Yoast's meta API, which internally triggers wp_get_document_title() and re-fires the pre_get_document_title filter, causing the callback to re-enter itself indefinitely. This produced a 300-second PHP timeout visible only on the AMP front page. A re-entrancy guard now prevents the loop.<\/li>\n<li>Fixed: All In One SEO Pack (AIOSEO) integration now works with AIOSEO v4 and above. The previous code called All_in_One_SEO_Pack() directly, a class removed in AIOSEO v4 (2021), so meta description, Open Graph, and Twitter Card tags were silently missing from AMP pages on all modern AIOSEO installs. The guard now detects AIOSEO v4+ via the aioseo() function and calls aioseo()-&gt;head-&gt;output() to render the full meta block, while retaining the legacy v3 code path as a fallback.<\/li>\n<li>Fixed: AIOSEO homepage title sync now works on v4+ using aioseo()-&gt;meta-&gt;title-&gt;getPostTitle(). The previous call used a non-existent get() method and silently returned no title on all modern AIOSEO versions.<\/li>\n<li>Fixed: WP-Optimize compatibility fully rewritten. The previous fix attempted to remove a WP-Optimize hook at plugin-load time, but AMP WP loads alphabetically before WP-Optimize so the class did not exist yet and the removal never executed. Three specific issues are now resolved: (1) HTML compression: WP-Optimize's output buffer ob_start has no AMP check and was compressing AMP HTML; it is now removed before it fires. (2) Delay JS: the Delay JS feature uses a regex that matches all script tags including AMP runtime and component scripts, rewriting src to data-src and preventing them from loading; it is now disabled on AMP pages. (3) Page caching: AMP responses are now excluded from WP-Optimize's page cache via the wpo_can_cache_page filter so corrupted output is never stored. CSS and JS minification were already safe via WP-Optimize's own is_amp_endpoint() check.<\/li>\n<li>Fixed: WP Fastest Cache compatibility extended to cover all features that have no built-in AMP check. Previously only JS combine\/minify, CSS combine, lazy load, and Google Fonts were disabled on AMP pages. HTML minification (standard and aggressive), CSS minification, inline CSS minification, and HTML comment removal are now also disabled; all five ran unconditionally on AMP pages in every prior version.<\/li>\n<li>Fixed: OneSignal Web Push Notifications integration corrected on four fronts. (1) The amp-web-push component was never injected into AMP pages because the add_action call was wrapped in an inverted function_exists guard that always evaluated false after the function was defined directly above it. (2) The HTTP site toggle was saved under the key onesignal_http_site_switch but read back as onesignal_switch_http_site, so HTTP mode was never activated. (3) HTTPS helper and permission dialog HTML pointed to outdated bundled copies inside the AMP WP plugin instead of the installed OneSignal plugin's own sdk_files, which load the current SDK from cdn.onesignal.com. (4) A missing isset on onesignal_app_id generated a PHP notice when the App ID field was left empty.<\/li>\n<li>Fixed: Structured data schema type (<code>schema_type_for_post<\/code>) is now validated against the allowed set (<code>Article<\/code>, <code>NewsArticle<\/code>, <code>BlogPosting<\/code>) before being passed to the JSON-LD generator. A tampered or corrupted database value could previously write an arbitrary <code>@type<\/code> string into the JSON-LD output, producing invalid structured data that fails Google's Rich Results validator.<\/li>\n<li>Fixed: <code>datePublished<\/code> and <code>dateModified<\/code> in JSON-LD structured data now use ISO 8601 datetime format with timezone offset (<code>DATE_ATOM<\/code>, e.g. <code>2024-01-15T10:30:00+05:00<\/code>) instead of date-only format (<code>Y-m-d<\/code>). The previous date-only format omits time and timezone information, which is non-compliant with the Schema.org <code>DateTime<\/code> specification and reduces precision for Google's structured data parser.<\/li>\n<li>Fixed: <code>interactionStatistic.userInteractionCount<\/code> in JSON-LD structured data is now cast to integer before output. <code>get_comments_number()<\/code> returns a string; Schema.org defines <code>userInteractionCount<\/code> as a <code>Number<\/code> type, so a string value caused Google's Rich Results validator to report a type mismatch on every post.<\/li>\n<li>Fixed: <code>Article<\/code>, <code>NewsArticle<\/code>, and <code>BlogPosting<\/code> schemas now always include an <code>image<\/code> field. When a post has no featured image, the generator falls back to the organization logo (when a logo is configured in AMP WP branding settings). Google treats <code>image<\/code> as required for all Article-type rich results: posts without a featured image previously emitted no <code>image<\/code> at all, silently disqualifying them from rich result eligibility in Google Search.<\/li>\n<li>Fixed: Yoast SEO homepage JSON-LD sync now actually fires on AMP pages. The <code>amp_wp_json_ld_website_<\/code> filter (note the trailing underscore, which is the real filter name emitted by the generator) was registered without the trailing underscore as <code>amp_wp_json_ld_website<\/code>, causing the callback to be permanently silently skipped. The site name and alternate name set in Yoast SEO options were never merged into the WebSite schema on AMP homepages.<\/li>\n<li>Removed: Multi Rating compatibility. The plugin was closed on WordPress.org and has not been updated since 2018; it is no longer installable. The compatibility block was also registered unconditionally with no detection guard, meaning three dead function calls fired on every AMP page load even when Multi Rating was not installed. Removed the <code>add_action<\/code> call, the <code>multi_rating()<\/code> method, and the file-header reference.<\/li>\n<li>Verified: Snip Rich Snippets (<code>rich-snippets-schema<\/code>) compatibility with AMP pages confirmed correct and complete. AMP WP's template system does not fire <code>wp_head<\/code>, so Snip's own head hook is silent on AMP pages. The compatibility layer re-routes Snip's <code>print_snippets<\/code> output to <code>amp_wp_template_head<\/code> or <code>amp_wp_template_footer<\/code> (respecting Snip's own \"snippets in footer\" setting) exactly once per request. Snip's JSON-LD output is AMP-spec-valid (<code>&lt;script type=\"application\/ld+json\"&gt;<\/code> is permitted in AMP pages) and coexists with AMP WP's own structured data blocks without duplication.<\/li>\n<li>Fixed: wpForo Forum compatibility now works correctly with wpForo 3.x. The previous detection used <code>class_exists('wpForo')<\/code>, which always returned false on wpForo 3.x because that version moved to a PHP namespace (<code>wpforo\\wpforo<\/code>). As a result, the <code>amp_wp_amp_version_exists<\/code> filter was never registered, and AMP WP silently served AMP pages on wpForo forum URLs on all modern wpForo installs. Detection now uses <code>defined('WPFORO_VERSION')<\/code>, which is reliably set by all wpForo versions.<\/li>\n<\/ul>\n\n<h4>1.7.2 \u2013 2026-04-26<\/h4>\n\n<ul>\n<li>Fixed: Google Analytics AMP tag now correctly detects GA4 (<code>G-XXXXXXXX<\/code>) vs Universal Analytics (<code>UA-XXXXXXX-X<\/code>) IDs. GA4 IDs now output <code>&lt;amp-analytics type=\"gtag\"&gt;<\/code> with <code>gtag_id<\/code> \/ <code>config<\/code> vars, while UA IDs continue to use the legacy <code>type=\"googleanalytics\"<\/code> vendor. This resolves the persistent <code>[AmpAnalytics googleanalytics] Warning: [object Object]<\/code> console error that appeared after migrating to a GA4 Measurement ID.<\/li>\n<li>Fixed: JSON-LD structured data: 11 Schema.org \/ Google Rich Results compliance issues resolved: <code>mainEntityOfPage<\/code> is now a typed <code>WebPage<\/code> object instead of a plain URL; <code>publisher<\/code> outputs an inline <code>Organization<\/code> when no logo is configured so the <code>#organization<\/code> reference never dangles; <code>headline<\/code> capped at 110 characters per Google AMP article spec; all <code>@context<\/code> values normalised to <code>https:\/\/schema.org<\/code> (no trailing slash); all <code>@id<\/code> values upgraded to absolute URLs; <code>WebSite<\/code> schema uses <code>description<\/code> instead of <code>alternateName<\/code> for the site tagline; <code>AudioObject<\/code> now includes the required <code>name<\/code> property; <code>post_excerpt<\/code> is sanitised before output; <code>wordCount<\/code> restricted to Article sub-types only; <code>WebPage potentialAction<\/code> corrected to a direct <code>SearchAction<\/code> object; <code>JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE<\/code> added to JSON output flags.<\/li>\n<li>Fixed: AdSense Auto Ads (and any custom <code>&lt;head&gt;<\/code> code) now outputs via the <code>amp_wp_template_head_deferred<\/code> hook at priority 5 instead of <code>amp_wp_template_head<\/code>, ensuring the snippet is injected after AMP boilerplate styles are written, which is required for <code>&lt;amp-auto-ads&gt;<\/code> to be recognised and fired correctly by the AMP runtime.<\/li>\n<li>Improved: Upgraded Font Awesome from 4.7.0 (MaxCDN) to 6.7.2 (cdnjs), eliminating browser console warnings about incorrect glyph bounding boxes present in the FA 4.7.0 font file. The v4-shims stylesheet is loaded automatically so all existing <code>fa fa-*<\/code> icon classes continue to work with no template changes required.<\/li>\n<li>Improved: WordPress Coding Standards (PHPCS) compliance in <code>amp-wp-template-functions.php<\/code>: all output values are now properly escaped (<code>esc_attr()<\/code>, <code>wp_kses_post()<\/code>), loose <code>==<\/code> comparisons replaced with strict <code>===<\/code>, variable assignments moved out of conditions, <code>in_array()<\/code> calls updated with strict mode, reserved-keyword parameter names renamed, and PHPDoc parameter annotations corrected throughout.<\/li>\n<li>Improved: WordPress Coding Standards (PHPCS) compliance in <code>class-amp-wp-html-util.php<\/code>: added file-level docblock, renamed camelCase local variables to snake_case in <code>renameElement()<\/code>, fixed variable assignments in conditions in <code>get_child_tag_attribute()<\/code>, corrected a <code>@param<\/code> name mismatch in the <code>child()<\/code> method docblock, and added <code>phpcs:ignore<\/code> annotations for PHP DOM API built-in properties (<code>parentNode<\/code>, <code>childNodes<\/code>, <code>ownerDocument<\/code>, etc.) that cannot be renamed.<\/li>\n<\/ul>\n\n<h4>1.7.1 \u2013 2026-04-26<\/h4>\n\n<ul>\n<li>Fixed: Select2 CSS in the admin now scoped to <code>.select2-container.amp-wp-select-container<\/code>, preventing style conflicts when ACF (Advanced Custom Fields) or other plugins ship their own Select2 instance on the same admin page.<\/li>\n<li>Fixed: Comments section on single posts no longer hides the \"Add Comment\" button when a post has zero comments; comments are open so visitors can start a discussion. The comment list itself is still only rendered when comments exist.<\/li>\n<li>Improved: Add-ons tab card layout: Install\/Update action button now appears above the version info line, and the action area uses flexbox for consistent alignment across varying content lengths.<\/li>\n<li>Fixed: PHP Warning \"Undefined array key amp_wp_settings_nonce_field\" in settings save handler. The <code>||<\/code> operator caused the nonce value to be read before its existence was confirmed; corrected to <code>&amp;&amp;<\/code>.<\/li>\n<li>Fixed: WP Rocket redirect loop on URLs excluded from AMP. WP Rocket was serving a stale cached redirect (non-AMP \u2192 AMP) after the URL was added to the exclusion list, while the plugin redirected back (AMP \u2192 non-AMP). Excluded URLs are now pushed into WP Rocket's <code>rocket_cache_exclude_uris<\/code> bypass list so cached redirects are never served for them, and <code>DONOTCACHEPAGE<\/code> is set on the current request to prevent a new cache file from being written.<\/li>\n<li>Improved: <code>class-amp-wp-plugin-compatibility.php<\/code> file and class docblocks rewritten to professional WordPress PHPDoc standard. The file header now documents all supported third-party plugins grouped by category (Cache &amp; Performance, SEO, Multilingual, Media &amp; Lazy Load, Social &amp; Comments, Forms, Structured Data, Links &amp; Permalinks, Miscellaneous) with plugin URLs; class docblock describes the conditional-detection architecture.<\/li>\n<li>Removed: WP Speed Grades Lite compatibility. The plugin was closed on WordPress.org on 1 March 2021 for guideline violation and is no longer available for download. Removed the <code>WP_SPEED_GRADES_VERSION<\/code> detection block, the <code>pre_init()<\/code> method, and all references in docblocks.<\/li>\n<li>Fixed: Translated AMP pages returning 404 when Polylang is active with subdirectory language URLs (e.g. <code>\/uk\/category\/post\/amp\/<\/code>). The AMP URL transformer was reading the language prefix segment (e.g. <code>uk<\/code>) as a post slug and failing to detect the AMP endpoint. Language slugs are now added to the URL transformer exclusion list when Polylang is configured in subdirectory mode, mirroring the existing WPML fix.<\/li>\n<\/ul>\n\n<h4>1.7.0 \u2013 2026-04-23<\/h4>\n\n<ul>\n<li>Added: Add-ons tab now shows installed and latest version for each premium add-on (e.g. \"Installed: v2.0.0 | Latest: v2.0.0\").<\/li>\n<li>Added: Download button on the Add-ons tab hides when the add-on is already installed and up to date.<\/li>\n<li>Added: Update button appears on the Add-ons card when an installed add-on is outdated (installed version &lt; latest version).<\/li>\n<li>Added: Latest version is fetched from the public <code>amp-wp-addon-versions<\/code> GitHub repository and cached for 12 hours via WordPress transients.<\/li>\n<li>Added: Manual version cache refresh: visiting the Add-ons page with <code>?amp_refresh_versions=1<\/code> clears the cached version and forces a fresh fetch.<\/li>\n<li>Added: Full Help &amp; Documentation page: replaces the placeholder with Getting Started, Content Control, Design, Analytics &amp; Ads, Embeds, Add-Ons, and FAQ sections.<\/li>\n<li>Fixed: Undefined variable <code>$page<\/code> warning in <code>amp-wp-admin-header.php<\/code>. The active tab highlight now reads the current page from the URL query parameter directly.<\/li>\n<li>Fixed: <code>wp_redirect()<\/code> replaced with <code>wp_safe_redirect()<\/code> + <code>exit<\/code> on activation redirect to prevent open redirect and ensure execution stops.<\/li>\n<li>Fixed: <code>amp_wp_version_check_using_wpapi()<\/code> wrapped in <code>function_exists<\/code> guard and moved to utility functions to prevent fatal errors on duplicate inclusion.<\/li>\n<\/ul>\n\n<h4>1.6.0 \u2013 2026-04-14<\/h4>\n\n<ul>\n<li>Added: Instagram Reels (<code>\/reel\/<\/code>) and IGTV (<code>\/tv\/<\/code>) embed support alongside existing <code>\/p\/<\/code> posts via <code>amp-instagram<\/code>.<\/li>\n<li>Added: <code>data-captioned<\/code> passthrough: preserves Instagram caption flag when the original embed included <code>data-instgrm-captioned<\/code>.<\/li>\n<li>Added: Auto layout detection for <code>amp-iframe<\/code>: sets <code>layout=\"responsive\"<\/code> when both width and height are present; <code>layout=\"fixed-height\"<\/code> when only height is available.<\/li>\n<li>Added: Pass-through of <code>layout<\/code>, <code>resizable<\/code>, <code>scrolling<\/code>, and <code>srcdoc<\/code> attributes to <code>amp-iframe<\/code> for fuller AMP spec coverage.<\/li>\n<li>Improved: <code>amp-facebook<\/code> output now includes a proper closing tag and corrected attribute spacing.<\/li>\n<li>Improved: <code>amp-playbuzz<\/code> component now supports both <code>src<\/code> (full URL) and <code>data-item<\/code> (item ID) conventions, plus optional <code>data-item-info<\/code>, <code>data-share-buttons<\/code>, and <code>data-comments<\/code> attributes.<\/li>\n<li>Improved: <code>amp-instagram<\/code> dimensions updated to <code>1\u00d71<\/code> with <code>layout=\"responsive\"<\/code> per AMP documentation.<\/li>\n<li>Improved: JSON-LD <code>@context<\/code> updated from <code>http:\/\/schema.org<\/code> to <code>https:\/\/schema.org<\/code>.<\/li>\n<li>Improved: <code>SearchAction<\/code> structured data updated to use the <code>EntryPoint<\/code> object format with <code>urlTemplate<\/code> and <code>search_term_string<\/code> per current Schema.org specification.<\/li>\n<li>Improved: Tumblr share button updated to the current widget API endpoint (<code>https:\/\/www.tumblr.com\/widgets\/share\/tool<\/code>) with correct parameters.<\/li>\n<li>Improved: <code>aria-label<\/code> attribute on social share buttons corrected (was producing malformed HTML).<\/li>\n<li>Fixed: PHP 8 compatibility, replaced <code>@fopen()<\/code> error suppression in <code>Fastimage.php<\/code> with a proper <code>set_error_handler<\/code> \/ <code>restore_error_handler<\/code> pattern.<\/li>\n<li>Fixed: PHP 8 compatibility, replaced <code>@getimagesize()<\/code> suppression with an explicit <code>false !== $size<\/code> check.<\/li>\n<li>Fixed: Replaced all deprecated <code>join()<\/code> calls with <code>implode()<\/code> across the codebase.<\/li>\n<li>Removed: <code>amp-addthis<\/code> from the supported AMP components list (component retired by the AMP Project).<\/li>\n<li>Removed: <code>amp-gfycat<\/code> from the supported AMP components list (component retired by the AMP Project).<\/li>\n<\/ul>\n\n<h4>1.5.19 \u2013 2026-04-03<\/h4>\n\n<ul>\n<li>Fixed: Resolved PHP 8.4 compatibility issue: deprecated return type warning in <code>Amp_WP_Html_Util::loadHTML()<\/code> due to incompatible method signature with <code>DOMDocument::loadHTML()<\/code>. Added <code>#[\\ReturnTypeWillChange]<\/code> attribute, explicit <code>: bool<\/code> return type, and proper return value.<\/li>\n<li>Removed: Dropped Vine embed support as the platform was permanently shut down in 2017.<\/li>\n<\/ul>\n\n<h4>1.5.18 \u2013 2026-01-28<\/h4>\n\n<ul>\n<li>Fixed: PHP 8.2 compatibility: \"Trying to access array offset on value of type bool\" warning in <code>amp-wp-theme-functions.php<\/code> when sharing posts without featured images on Pinterest.<\/li>\n<li>Fixed: Translation loading notice, text domain now loads at the <code>init<\/code> action hook, complying with WordPress 6.7.0+ requirements.<\/li>\n<li>Fixed: Undefined variable warning in layout settings by removing unused template code.<\/li>\n<\/ul>\n\n<h4>1.5.17 \u2013 2024-10-01<\/h4>\n\n<ul>\n<li>Fixed: Missing file documentation in <code>Amp_WP_Redirect_Router<\/code> class to adhere to WordPress Coding Standards.<\/li>\n<li>Improved: Inline documentation for class methods, function parameters, and sanitization functions.<\/li>\n<li>Fixed: <code>explode()<\/code> called with potentially null parameters, now validates before calling.<\/li>\n<li>Fixed: <code>DOMDocument::__construct()<\/code> called with null <code>$version<\/code> parameter.<\/li>\n<\/ul>\n\n<h4>1.5.16 \u2013 2024-06-03<\/h4>\n\n<ul>\n<li>Fixed: Resolved XSS vulnerabilities.<\/li>\n<li>Fixed: Corrected string concatenation to comply with coding standards.<\/li>\n<\/ul>\n\n<h4>1.5.15 \u2013 2023-07-09<\/h4>\n\n<ul>\n<li>Enhancement: Updated AMP tags list.<\/li>\n<li>Note: Overall improvements.<\/li>\n<\/ul>\n\n<h4>1.5.14 \u2013 2021-12-24<\/h4>\n\n<ul>\n<li>Fixed: Social sharing issue on single post.<\/li>\n<\/ul>\n\n<h4>1.5.13 \u2013 2021-08-19<\/h4>\n\n<ul>\n<li>Note: PHP 8 compatibility improvements.<\/li>\n<li>Fixed: Undefined variables.<\/li>\n<\/ul>\n\n<h4>1.5.12 \u2013 2021-06-23<\/h4>\n\n<ul>\n<li>Added: SG Optimizer plugin compatibility.<\/li>\n<li>Improved: JSON-LD schema revision.<\/li>\n<li>Fixed: Yoast SEO v14 compatibility.<\/li>\n<li>Fixed: Color issues.<\/li>\n<li>Fixed: AMP Carousel component updated to v0.2.<\/li>\n<li>Fixed: RTL CSS fixes.<\/li>\n<\/ul>\n\n<h4>1.5.11 \u2013 2019-11-15<\/h4>\n\n<ul>\n<li>Feature: Description display on archive pages.<\/li>\n<li>Feature: OneSignal Push Notifications support.<\/li>\n<li>Note: Added Facebook App ID option for post sharing.<\/li>\n<\/ul>\n\n<h4>1.5.10 \u2013 2019-09-17<\/h4>\n\n<ul>\n<li>Fixed: Resolved self-canonical AMP URL issue when AMP URL format is set to \"End\".<\/li>\n<\/ul>\n\n<h4>1.5.9 \u2013 2019-09-16<\/h4>\n\n<ul>\n<li>Fixed: Resolved self-canonical AMP URL issue when AMP URL format is set to \"Start\".<\/li>\n<\/ul>\n\n<h4>1.5.8 \u2013 2019-07-18<\/h4>\n\n<ul>\n<li>Feature: Option to exclude any taxonomy or post type from AMP under General settings.<\/li>\n<li>Fixed: <code>amp-mustache<\/code> script enqueue error when using Contact Form 7.<\/li>\n<\/ul>\n\n<h4>1.5.7 \u2013 2019-04-30<\/h4>\n\n<ul>\n<li>Fixed: Broken editor issue when editing a post or page.<\/li>\n<\/ul>\n\n<h4>1.5.6 \u2013 2019-04-29<\/h4>\n\n<ul>\n<li>Added: AMP WP \u2013 Contact Form 7 Extension.<\/li>\n<li>Fixed: Social sharing link.<\/li>\n<\/ul>\n\n<h4>1.5.5 \u2013 2019-04-18<\/h4>\n\n<ul>\n<li>Fixed: Minor bug fixes.<\/li>\n<\/ul>\n\n<h4>1.5.4 \u2013 2019-04-03<\/h4>\n\n<ul>\n<li>Fixed: Fastimage.php library path.<\/li>\n<\/ul>\n\n<h4>1.5.3 \u2013 2019-04-03<\/h4>\n\n<ul>\n<li>Fixed: Missing template for notifications.<\/li>\n<li>Fixed: Missing template for GDPR.<\/li>\n<li>Fixed: Max input variable value under System Status.<\/li>\n<li>Fixed: Header and content wrapper overlapping when sticky header is enabled.<\/li>\n<li>Fixed: Links starting with <code>wp-content<\/code> no longer converted when AMP URL format is \"End Point\".<\/li>\n<\/ul>\n\n<h4>1.5.2 \u2013 2019-03-27<\/h4>\n\n<ul>\n<li>Fixed: Social links colors in sidebar.<\/li>\n<\/ul>\n\n<h4>1.5.1 \u2013 2019-03-26<\/h4>\n\n<ul>\n<li>Note: Disabled development mode.<\/li>\n<\/ul>\n\n<h4>1.5.0 \u2013 2019-03-26<\/h4>\n\n<ul>\n<li>Note: Front-end theme code refactoring.<\/li>\n<li>Fixed: Broken landing page for Custom Post Types when AMP URL format is \"End Point\".<\/li>\n<\/ul>\n\n<h4>1.4.3.1 \u2013 2019-02-12<\/h4>\n\n<ul>\n<li>Feature: Jetpack compatibility.<\/li>\n<li>Improved: All in One SEO Pack plugin support.<\/li>\n<li>Fixed: Malformed URLs when AMP URL format is \"End Point\".<\/li>\n<li>Fixed: Jetpack undefined error.<\/li>\n<li>Fixed: Broken layout when notice bar is enabled.<\/li>\n<li>Fixed: Broken layout when GDPR is enabled.<\/li>\n<\/ul>\n\n<h4>1.4.3 \u2013 2019-01-26<\/h4>\n\n<ul>\n<li>Feature: Yoast SEO meta description tag support.<\/li>\n<li>Fixed: YouTube video height issue.<\/li>\n<\/ul>\n\n<h4>1.4.2 \u2013 2019-01-18<\/h4>\n\n<ul>\n<li>Feature: Responsive table CSS.<\/li>\n<li>Note: Front-end theme improvements.<\/li>\n<\/ul>\n\n<h4>1.4.1 \u2013 2019-01-04<\/h4>\n\n<ul>\n<li>Feature: Two new header presets.<\/li>\n<li>Feature: Customizable header color schemes.<\/li>\n<li>Feature: Schema type for Post.<\/li>\n<li>Fixed: Exclude URLs list issue on all pages.<\/li>\n<li>Fixed: Home page link issue on all pages.<\/li>\n<li>Fixed: Permalink structure prefix causing 404 errors on Home and Search pages.<\/li>\n<\/ul>\n\n<h4>1.4.0 \u2013 2018-12-12<\/h4>\n\n<ul>\n<li>Feature: Gutenberg editor support.<\/li>\n<li>Feature: AMP at the end of the URL support.<\/li>\n<li>Feature: Show\/Hide Related Post thumbnails.<\/li>\n<li>Feature: Show\/Hide Social Links on Single Post pages.<\/li>\n<li>Feature: Enable\/Disable structured data site-wide.<\/li>\n<li>Improved: Admin UI\/UX.<\/li>\n<li>Fixed: Minor errors.<\/li>\n<\/ul>\n\n<h4>1.3.1 \u2013 2018-12-03<\/h4>\n\n<ul>\n<li>Feature: Show\/Hide Date in Related Posts.<\/li>\n<li>Feature: Show\/Hide Author in Related Posts.<\/li>\n<li>Feature: Show\/Hide Date in Home Page Slider.<\/li>\n<li>Feature: Show\/Hide Author in Home Page Slider.<\/li>\n<li>Feature: Home Page Slider post count setting.<\/li>\n<\/ul>\n\n<h4>1.3.0 \u2013 2018-12-03<\/h4>\n\n<ul>\n<li>Feature: Show\/Hide Date on Archive\/Single Post pages.<\/li>\n<li>Feature: Show\/Hide Author on Archive\/Single Post pages.<\/li>\n<li>Feature: Show\/Hide Tags on Single Post pages.<\/li>\n<li>Note: Front-end structural improvements.<\/li>\n<li>Fixed: Social media share links with custom permalink structures.<\/li>\n<\/ul>\n\n<h4>1.2.2 \u2013 2018-12-02<\/h4>\n\n<ul>\n<li>Fixed: YouTube video embed error.<\/li>\n<\/ul>\n\n<h4>1.2.1 \u2013 2018-11-29<\/h4>\n\n<ul>\n<li>Note: Default configuration setup.<\/li>\n<li>Feature: New follow links \u2014 Pinterest, Instagram, LinkedIn, YouTube.<\/li>\n<li>Fixed: Minor errors.<\/li>\n<\/ul>\n\n<h4>1.2.0 \u2013 2018-11-23<\/h4>\n\n<ul>\n<li>Feature: Post Modified date display.<\/li>\n<li>Feature: Option to hide featured image on single pages.<\/li>\n<li>Note: Overall structural improvements.<\/li>\n<li>Note: Modified date now always included in structured data per updated Google requirements.<\/li>\n<li>Fixed: Search page action URL on HTTPS.<\/li>\n<li>Fixed: Invalid JSON for Yandex Metrica.<\/li>\n<li>Fixed: Custom HTML output in \"Codes right after &lt;body&gt; tag\".<\/li>\n<\/ul>\n\n<h4>1.1.1 \u2013 2018-11-16<\/h4>\n\n<ul>\n<li>Improved: Posts now show author display name instead of email or username.<\/li>\n<li>Fixed: Broken layout when social share is enabled from the Customizer.<\/li>\n<li>Fixed: Customizer preview refresh on option change in AMP Options Panel.<\/li>\n<\/ul>\n\n<h4>1.1.0 \u2013 2018-11-10<\/h4>\n\n<ul>\n<li>Improved: Settings panel revised.<\/li>\n<li>Fixed: 404 error on AMP WP activation.<\/li>\n<li>Fixed: Minor bugs.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed: Links for AMP Menus (Sidebar &amp; Footer Menu).<\/li>\n<li>Fixed: Too many redirects.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added: Yandex Metrica, AFS Analytics, and Adobe Analytics support.<\/li>\n<li>Added: Squirrly SEO plugin compatibility.<\/li>\n<li>Fixed: Mobile users force redirect.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Added: comScore UDM pageview tracking.<\/li>\n<li>Fixed: AMP page validation and minor bug fixes.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added: Alexa Metrics and Chartbeat Analytics support.<\/li>\n<li>Improved: CSS tweaks for pagination and buttons.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Note: Minor RTL CSS tweaks.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"The most complete free AMP plugin for WordPress. Supercharge mobile performance with Google Accelerated Mobile Pages, no coding required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/90521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=90521"}],"author":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pixelative"}],"wp:attachment":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=90521"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=90521"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=90521"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=90521"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=90521"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=90521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}