Last active
August 4, 2020 18:33
-
-
Save westonruter/c3d4d73418b310f12d3cba7245fccebc to your computer and use it in GitHub Desktop.
Plugin shim to make Geo Mashup plugin work with the AMP plugin. See https://wordpress.org/support/topic/shortcodes-for-geo-mashup-not-working/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Plugin Name: Geo Mashup AMP Compat | |
* | |
* @package Geo_Mashup_AMP_Compat | |
* @author Weston Ruter, Google | |
* @license GPL-2.0-or-later | |
* @copyright 2019 Google Inc. | |
* | |
* @wordpress-plugin | |
* Plugin Name: Geo Mashup AMP Compat | |
* Description: Plugin shim to make Geo Mashup plugin work with the AMP plugin. See <a href="https://wordpress.org/support/topic/shortcodes-for-geo-mashup-not-working/">support topic</a>. | |
* Plugin URI: https://gist.github.com/westonruter/c3d4d73418b310f12d3cba7245fccebc | |
* Version: 0.2.0 | |
* Author: Weston Ruter, Google | |
* Author URI: https://weston.ruter.net/ | |
* License: GNU General Public License v2 (or later) | |
* License URI: http://www.gnu.org/licenses/gpl-2.0.html | |
* Gist Plugin URI: https://gist.github.com/westonruter/c3d4d73418b310f12d3cba7245fccebc | |
*/ | |
namespace Geo_Mashup_AMP_Compat; | |
add_filter( 'amp_is_enabled', __NAMESPACE__ . '\filter_amp_is_enabled' ); | |
add_filter( 'the_content', __NAMESPACE__ . '\filter_content_to_fix_iframe', 100 ); | |
/** | |
* On standard mode sites, prevent the page in the Geo Mashup iframe from being served as AMP, since it requires JavaScript. | |
* | |
* @param bool $enabled Enabled. | |
* @return bool Filtered enabled. | |
*/ | |
function filter_amp_is_enabled( $enabled ) { | |
if ( isset( $_GET['geo_mashup_content'] ) ) { | |
$enabled = false; | |
} | |
return $enabled; | |
} | |
/** | |
* Inject sandbox=allow-scripts attribute on Geo Mashup iframe and remove invalid name attribute. | |
* | |
* @param string $content Content. | |
* @return string Filtered content. | |
*/ | |
function filter_content_to_fix_iframe( $content ) { | |
if ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) { | |
$content = preg_replace( | |
'/(<div class="gm-map"[^>]+?><iframe)( name="gm-map-[^"]+?")/', | |
'$1 sandbox="allow-scripts" ', | |
$content | |
); | |
} | |
return $content; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Installation instructions: https://gist.github.com/westonruter/6110fbc4bef0c4b8c021a112012f7e9c