AMP WP – Google AMP For WordPress
AMP WP is the most feature-rich, developer-friendly, and beginner-ready Google AMP plugin available for WordPress, completely free.
Originally built by Pixelative, a professional web development agency, AMP WP is now independently developed and maintained by Mohsin Rafique, 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.
Online Demo | CF7 Premium Extension | Support
Why AMP WP?
Google's Accelerated Mobile Pages (AMP) technology delivers pages up to 5x faster 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.
Free Features
Performance & Compatibility * Full Google AMP specification compliance (100% valid AMP output) * PHP 8.x compatible (tested through PHP 8.4) * Compatible with all major caching plugins (WP Rocket, SG Optimizer, W3 Total Cache, and more) * Compatible with Jetpack * Compatible with Yoast SEO (100%) * Compatible with "Automattic AMP" plugin * Gutenberg block editor support * RTL language support (100%) * GDPR compliant
Content & Embeds * Automatic AMP conversion for Posts, Pages, and Custom Post Types * Embed Images, Videos, Audios, and iFrames: YouTube, Vimeo, Twitter, Facebook, SoundCloud, Instagram (Posts, Reels & TV) * Lightbox for Images * Slider Support * Internal AMP Linking * Native AMP Search
Design & Customization * Two listing layouts: Classic View and List View * Customizable color scheme * Custom CSS options * Sticky Header * AMP WordPress Navigation Menu * Custom AMP Front Page * Social Icons
Control * Show/Hide AMP for individual Posts, Pages, and Custom Post Types * Show/Hide AMP for Taxonomies (Categories, Tags, Custom) * Show/Hide AMP mobile redirections * Show/Hide AMP on Search pages * Show/Hide Date, Author, and Thumbnail across Archive, Single Post, Related Posts, and Slider * Show/Hide Tags on Single Post pages * Enable/Disable Structured Data (JSON-LD Schema)
Engagement & Analytics * Related Posts (with thumbnail, date, and author controls) * Recent Comments * Notice Bar * Sidebar * Social Sharing Buttons * OneSignal Push Notifications integration * Third-party analytics support: Google Analytics, Facebook Pixel, Segment, Quantcast, Alexa Metrics, Chartbeat, comScore, Yandex Metrica, AFS Analytics, Adobe Analytics
Ads * Google AdSense Auto Ads for AMP support
Multilingual
* Translation Panel included
* Contact us at mohsin.rafique@gmail.com to contribute translations
Maintained by Mohsin Rafique
AMP WP was originally created by Pixelative, 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 Mohsin Rafique, a seasoned WordPress engineer with deep expertise in AMP specification compliance, PHP performance, and modern web standards.
For support, custom AMP theme development, or white-label licensing, contact Mohsin Rafique at mohsinrafique.com or mohsin.rafique@gmail.com.
Credits
- WordPress Plugin Boilerplate Generator by Tom McFarlin, License: GPLv2
- normalize.css, License: MIT
- Karla by Jonathan Pinhorn, License: SIL OFL
- Noto Sans by Google, License: SIL OFL
- Overpass Mono by Delve Withrington, License: SIL OFL
- Font Awesome Free 6.7.2 by Fonticons, Inc., Font: SIL OFL 1.1 / Code: MIT
Minimum Requirements
- WordPress 5.0 or higher
- PHP 7.4 or higher
- MySQL 8.0+ or MariaDB 10.5+
Tip: Install Regenerate Thumbnails and regenerate your thumbnails after activation to ensure the post listing layout renders correctly.
Automatic Installation (Recommended)
- Log in to your WordPress admin panel.
- Navigate to Plugins → Add New.
- Search for AMP WP.
- Click Install Now, then Activate.
- Go to AMP WP → Customize AMP to configure your settings.
Manual Installation
- Download the plugin ZIP from the WordPress plugin repository.
- Extract the ZIP and upload the
amp-wpfolder to/wp-content/plugins/via FTP or your hosting file manager. - Activate the plugin from Plugins in your WordPress admin panel.
- Navigate to AMP WP → Customize AMP to begin setup.
Developer Hooks
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 functions.php or in a standalone plugin. No plugin file edits are needed.
Template Actions
These actions fire inside AMP WP's own template system. They do not use wp_head or wp_footer. Output must be valid AMP markup.
amp_wp_template_head
Fires inside the AMP <head> element. Use for custom meta tags or other head markup. AMP WP reserves priority 0 for component scripts.
amp_wp_template_head_deferred
Fires in <head> after the AMP boilerplate styles have been written. Required injection point for <amp-auto-ads> and any snippet that must follow the boilerplate. AMP WP's own styles and scripts output here.
amp_wp_template_body_start
Fires immediately after the opening <body> tag.
amp_wp_body_beginning
Fires at the start of visible body content, before the site header renders.
amp_wp_post_content_below
Fires directly below the post content on single post pages.
amp_wp_template_footer
Fires before the closing </body> tag. Priority 999 is reserved for AMP WP's output sanitizer.
amp_wp_template_enqueue_scripts
Use to register additional AMP component scripts. Call amp_wp_enqueue_script( $handle, $src ) inside your callback.
amp_wp_after_comment_list
Fires after the comment list on single post pages.
amp_wp_notifications_bar
Fires inside the notification/notice bar template slot.
amp_wp_gdpr_compliance
Fires inside the GDPR banner template slot.
Analytics Actions
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 <amp-analytics> block for a provider not yet built in, or to modify the existing output before it renders.
amp_wp_analytics_ga(Google Analytics)amp_wp_analytics_fbp(Facebook Pixel)amp_wp_analytics_sa(Simple Analytics)amp_wp_analytics_qc(Quantcast)amp_wp_analytics_acm(Adobe Campaign Manager)amp_wp_analytics_cb(Chartbeat)amp_wp_analytics_comscore(comScore)amp_wp_analytics_yandex_metrica(Yandex Metrica)amp_wp_analytics_afs(AFS Analytics)amp_wp_analytics_adobe(Adobe Analytics)
AMP Version Control Filters
amp_wp_amp_version_exists
Control whether an AMP version is served for the current request. Return false to disable AMP for that page.
Parameter: (bool) $exists
add_filter( 'amp_wp_amp_version_exists', '__return_false' );
amp_wp_template_auto_redirect
Enable automatic redirection of all visitors from the non-AMP URL to the AMP URL. Default false.
Parameter: (bool) $redirect
amp_wp_filter_config_list
Extend the list of post types, taxonomies, and conditions where AMP is disabled site-wide.
Parameter: (array) $filters
URL and Permalink Filters
amp_wp_pre_get_permalink
Short-circuit AMP permalink generation. Return any non-false value to bypass the core URL builder.
Parameters: (mixed) $pre (default false), (int) $post_id
amp_wp_get_permalink
Filter the final AMP URL after it has been built.
Parameters: (string) $amp_url, (int) $post_id
amp_wp_url_format_filter
Change the AMP URL format. Accepted values: start-point (prefix, e.g. /amp/slug) or end-point (suffix, e.g. /slug/amp).
Parameter: (string) $format
amp_wp_url_excluded
Add URL paths that must never serve an AMP version.
Parameter: (array) $excluded_urls
amp_wp_transformer_exclude_subdir
Add path segments that the AMP URL transformer should skip when rewriting internal links. Used internally by AMP WP for WPML and Polylang language prefixes.
Parameter: (array) $exclude_dirs
Structured Data Filters (JSON-LD)
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 sprintf( 'amp_wp_json_ld_%s_', $type ) and the underscore must be part of the hook name you register.
amp_wp_json_ld_config
Filters the generator configuration before any schema is built.
Parameter: (array) $config with keys:
* active (bool): set false to disable the entire JSON-LD generator for the current request.
* logo (string): Organization logo URL. When non-empty, an Organization block is emitted on every page and all Article-type schemas reference it by @id.
* posts_type (string): Fallback schema type when schema_type_for_post is empty. Default BlogPosting.
* media_field_id (string): Post meta key for audio/video URL in format posts. Default _featured_embed_code.
AMP WP core attaches at priority 15 to inject the branding logo. Use priority 20 or higher to override it.
add_filter( 'amp_wp_json_ld_config', function( $config ) { ... }, 20 );
amp_wp_json_ld_organization_
Filters the Organization schema array before output. Fires only when a logo is configured. Return false or an empty array to suppress the block.
Parameter: (array) $data
add_filter( 'amp_wp_json_ld_organization_', function( $data ) { ... } );
amp_wp_json_ld_website_
Filters the WebSite schema array before output. Fires only on the homepage and front page.
Parameter: (array) $data
add_filter( 'amp_wp_json_ld_website_', function( $data ) { ... } );
amp_wp_json_ld_single_
Filters 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.
Parameter: (array) $data
add_filter( 'amp_wp_json_ld_single_', function( $data ) { ... } );
Content and Theme Filters
amp_wp_template_page_on_front
Specify the page ID to use as the AMP front page when a static homepage is configured.
Parameter: (int) $page_id, default 0.
amp_wp_template_show_on_front
Control what displays on the AMP homepage. Accepted values: posts or page.
Parameter: (string) $show_on_front
amp_wp_template_active_template
Override the active template metadata array.
Parameter: (array) $template_info
amp_wp_template_set_menu_walker
Enable or disable the custom sidebar menu walker for a specific nav menu location.
Parameters: (bool) $use_walker, (array) $args
amp-wp-template-default-theme-mod
Set default values for AMP WP Customizer options.
Parameters: (mixed) $default_value, (string) $option_key
amp_wp_home_featured
Customize the WP_Query arguments used to fetch posts for the homepage featured slider.
Parameter: (array) $query_args
amp_wp_get_template
Override the file path used to locate a template part.
Parameters: (string) $located, (string) $file, (array) $args, (string) $template_path, (string) $default_path
amp_wp_html_dom_filter_attributes
Filter an HTML element's attributes during the DOM processing pipeline.
Parameters: (array) $attributes, (string) $tag_name, (array) $valid_attributes
amp_wp_style_files_{$file}
Filter CSS file content before it is added to the inline <style amp-custom> block. {$file} is the stylesheet handle.
Parameter: (string) $css
amp_wp_social_share_cache_time
Set the cache duration in seconds for social share counts. Default 7200 (120 minutes).
Parameters: (int) $seconds, (int) $post_id
amp_wp_social_share_count
Filter social share count results after they are fetched.
Parameter: (array) $results
amp_wp_gdpr_country_list
Customize the list of countries considered GDPR-compliant.
Parameter: (array) $countries
amp_wp_translation_std
Provide or override fallback translation strings.
Parameter: (array) $translations
Admin and Settings Hooks
amp_wp_settings_tab_menus (filter)
Add a custom tab to the AMP WP settings panel. Key is the tab slug, value is the tab label HTML.
Parameter: (array) $tabs
add_filter( 'amp_wp_settings_tab_menus', function( $tabs ) { $tabs['my-tab'] = '<span>My Tab</span>'; return $tabs; } );
amp_wp_settings_tab_section (action)
Render the HTML content for your custom settings tab. Check $_GET['tab'] to target a specific tab.
amp_wp_save_setting_sections (action)
Fires when the settings form is submitted. Hook here to read and save data for a custom tab.
amp_wp_save_setting_notice (filter)
Customize the "Settings saved." notice text.
Parameter: (string) $notice_text
amp_wp_welcome_tab_menus (filter)
Add a custom tab to the AMP WP welcome/dashboard page.
Parameter: (array) $tabs
amp_wp_welcome_tab_section (action)
Render HTML content for a custom welcome page tab.
amp_wp_default_configurations (action)
Fires on plugin activation. Hook here to set default options for add-on plugins.
