Support » Plugin: AMP » AMP Script Error

  • Resolved Tnace

    (@radiocure1)


    Hi,
    I run ScienceTrends.com and I got the message below from Google’s Webmaster Tools. It appears that the amp-ad script is being called twice. I’ve searched all over this plugin but can’t figure out how to fix it and don’t see any support forums on this. Would you be able to help me resolve this AMP issue?
    Thanks,

    Trevor

    New Accelerated Mobile Pages issue detected for site https://sciencetrends.com/

    To owner of https://sciencetrends.com/,

    Search Console has identified that your site is affected by 1 new Accelerated Mobile Pages related issue. This means that Accelerated Mobile Pages may be negatively affected in Google Search results. We encourage you to fix this issue.

    New issue found:

    The tag ‘amp-ad extension .js script’ appears more than once in the document. This will soon be an error.

    The page I need help with: [log in to see the link]

Viewing 13 replies - 1 through 13 (of 13 total)
  • Plugin Contributor Ryan Kienstra

    (@ryankienstra)

    Question About Plugins

    Hi @radiocure1,
    Thanks for bringing that up. I also see that warning:

    https://validator.ampproject.org/#url=https%3A%2F%2Fsciencetrends.com%2Findia-and-bhutan-as-a-model-for-inter-and-intra-regional-energy-trade%2Famp%2F

    Are you using any AMP-related plugin or custom code that could be adding the amp-ad extension? The plugin now automatically outputs that extension JavaScript file if it detects the component, like <amp-ad>.

    Tnace

    (@radiocure1)

    Thanks Ryan for the quick response! To show ads I’m using Ad Inserter Pro and enabling AMP ads. I believe this is one source of the amp-ad script and it appears the other source may be this plugin? I also have Custom (AMP) Accelerated Mobile Pages installed but just to modify some AMP CSS. Any ideas how to rectify? Sorry, a bit new to using AMP and how it works.
    Thanks,

    Trevor

    Plugin Contributor Ryan Kienstra

    (@ryankienstra)

    Hi @radiocure1,
    Thanks for letting me know which plugins you’re using.

    Is there a place in the UI for the Ad Inserter Pro plugin where a script like this is added?

    
    <script async custom-element="amp-ad" src="https://cdn.ampproject.org/v0/amp-ad-0.1.js"></script>
    

    It might look like this:
    https://adinserter.pro/adsense-ads#amp

    That script shouldn’t be needed, as this AMP plugin now detects <amp-ad> in the post content, and adds the scripts.

    • This reply was modified 1 year, 5 months ago by  Ryan Kienstra.
    Tnace

    (@radiocure1)

    I don’t have that code anywhere from what I see. Not sure how to share a screenshot but below is the code I put into Ad Inserter. Is that not the right code? I’ve also checked the AMP Pages option for the insertion. Please let me know if there’s a way to share a screenshot if you’d like to see one.

    <script async src=”//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js”></script>
    <!– ST Post Text 1 –>
    <ins class=”adsbygoogle”
    style=”display:block”
    data-ad-client=”ca-pub-XXXXX”
    data-ad-slot=”XXXXX”
    data-ad-format=”link”>
    <script>
    (adsbygoogle = window.adsbygoogle || []).push({});
    </script>

    [ADINSERTER AMP]

    <amp-ad width=”100vw” height=320
    type=”adsense”
    data-ad-client=”ca-pub-XXXXX”
    data-ad-slot=”XXXXX”
    data-auto-format=”rspv”
    data-full-width>
    <div overflow></div>
    </amp-ad>

    Plugin Contributor Ryan Kienstra

    (@ryankienstra)

    Hi @radiocure1,
    Thanks for posting the code from the UI. Like you mentioned, that doesn’t look to be the source of the problem.

    Ad Inserter Pro looks to be a paid plugin, so it’s hard to give specific advice:
    https://adinserter.pro/

    But looking at the free version on WordPress.org, here’s a snippet that you can place in your theme’s functions.php file, or a custom plugin. This might prevent that extra script from appearing.

    
    remove_action( 'amp_post_template_head', 'ai_amp_head_hook', 99999 );
    

    Could you let me know if that helps? It’d be best to run that on a staging site, or locally.

    It removes an action in the Ad Inserter plugin:
    https://plugins.trac.wordpress.org/browser/ad-inserter/trunk/ad-inserter.php#L1551

    Tnace

    (@radiocure1)

    I’ve inserted the code into Functions.php but still get the error. I’m seeing these two instances of amp-ad js. I can’t figure out where the first one comes from and doesn’t have any tags I can see that attribute what’s inserting it. However, it looks like the second one is this plugin. Is it best to remove one over the other? Could I just remove it from this AMP plugin?

    <script type=’text/javascript’ src=’https://cdn.ampproject.org/v0/amp-ad-latest.js’ async custom-element=”amp-ad”></script>

    <meta name=”generator” content=”AMP Plugin v0.7.0″ /><script async custom-element=”amp-ad” src=”https://cdn.ampproject.org/v0/amp-ad-0.1.js”></script> <style amp-custom>

    Plugin Contributor Ryan Kienstra

    (@ryankienstra)

    Temporary Workaround

    Hi @radiocure1,
    Thanks for trying that snippet in functions.php. Here’s a temporary workaround to use instead:

    
    add_filter( 'amp_post_template_data', function( $data ) {
    	if ( isset( $data['amp_component_scripts']['amp-ad'] ) ) {
    		unset( $data['amp_component_scripts']['amp-ad'] );
    	}
    	return $data;
    } );
    

    (Building on @westonruter‘s response here: https://wordpress.org/support/topic/the-tag-amp-ad-extension-js-script-appears-more-than-once-in-the-document/)

    Some other plugin is probably improperly using the action amp_post_template_head or the filter amp_post_template_data. It would probably be best to also contact other plugin authors, to find out where the issue could be.

    But the snippet above should prevent this plugin from outputting the amp-ad JavaScript file.

    I’m having the same issue with the same plugin, Ad Inserter Pro.

    My issue is that I don’t see the amp-ad script at all. Though the amp-ad tags are appearing.

    They do have a header insert function built into the plugin, to which I have:

    <?php if ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) { ?>
    <script async custom-element="amp-ad" src="https://cdn.ampproject.org/v0/amp-ad-0.1.js"></script>
    <?php } else { ?> //so on

    But it’s not appearing. Demo url: view-source:https://www.traileraddict.com/article/fox-planning-6-x-men-movies-2018-2020-report/amp/?cb=13

    Plugin Contributor Ryan Kienstra

    (@ryankienstra)

    Hi @casbboy,
    Thanks for pasting the code that outputs the script. That really helps.

    Could you please upgrade this AMP plugin to the latest version, 0.7.0? That has a way to detect <amp-ad> elements in the post content, and add that script.

    If the script still doesn’t appear, let me know and I’ll help you from there.

    Plugin Contributor Ryan Kienstra

    (@ryankienstra)

    Question About Workaround

    Hi @radiocure1,
    Have you had a chance to try the workaround above? Thanks!

    Tnace

    (@radiocure1)

    Sorry for the delay. That worked perfectly, thanks for all your help Ryan!

    The amp plugin update fixed it. I see:

    <script type=’text/javascript’ src=’https://cdn.ampproject.org/v0/amp-ad-latest.js’ async custom-element=”amp-ad”></script>

    I have the same issue with AMP Plugin Release v1.0-beta1:

    Validation gives me:

    The tag ‘amp-auto-ads extension .js script’ appears more than once in the document.

    Therefore, I added this to functions.php

    add_filter( ‘amp_post_template_data’, function( $data ) {
    $data[‘amp_component_scripts’] = array_merge(
    $data[‘amp_component_scripts’],
    array(
    ‘amp-ad’ => ‘https://cdn.ampproject.org/v0/amp-ad-latest.js’,
    )
    );
    return $data;
    } );

    It did not seem to do anything. Perhaps I need to add something additional to my header.php.

Viewing 13 replies - 1 through 13 (of 13 total)
  • The topic ‘AMP Script Error’ is closed to new replies.